You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中给原型扩展方法时出现的[[Scopes]]属性是什么含义?

关于[[Scopes]]的含义说明

[[Scopes]]是JavaScript引擎内置的隐藏属性,不会暴露给普通JS代码调用,仅能在浏览器调试控制台等工具中查看,它的核心作用是存储对应函数的作用域链,决定了函数运行时可以访问的变量范围。

结合你的场景的具体解释:

你定义的sel方法是直接在全局作用域下声明的函数,没有嵌套在其他函数/块级作用域内部,所以它的作用域链上只有全局作用域,这就是你看到[[Scopes]]下仅有Global项的原因。
如果函数是嵌套声明的,比如外层有另一个函数包裹,那么[[Scopes]]中还会按顺序存储所有外层作用域的变量快照,这也是JS闭包能够访问外层函数变量的底层实现基础。

附测试代码整理

// 给String原型添加自定义选择器方法
String.prototype.sel = function sel() {
    var elem = document.querySelectorAll(this);
    if (elem.length == 1)
        return elem[0];
    return elem;
}

// 调用示例
'[btnSend]'.sel().onclick = () => {
    alert('ok')
}

console.log(String.prototype);
<button btnSend>Send</button>

注:你第一段示例代码中写的doc.querySelectorAll属于笔误,完整测试代码中修正为document.querySelectorAll是正确的。

内容的提问来源于stack exchange,提问作者Giulia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:39:01