ECMAScript 中的内部属性定义是为了什么
What Internal Property In ECMAScript is defined for?
ECMAScript 中的内部属性是为什么定义的?规范是什么意思
此规范使用各种内部属性来定义 对象值的语义。这些内部属性不是 ECMAScript 语言。它们由此规范定义 纯粹出于说明目的。
这是否意味着 ECMAScript 定义的内部属性不可用于编程?它们用于javascript引擎的实现?
内部属性定义代码在执行时的行为,但无法通过代码访问。ECMAScript 为 JavaScript 中的对象定义了许多内部属性。内部属性由双方括号表示法表示。
例如,JavaScript 函数是一个对象,它具有 [[call]] 属性。[[调用]] 属性对于函数是唯一的。
另一个内部属性示例是 [[原型]] 属性。此属性是指向实例正在使用的原型对象的指针。由于无法通过代码访问内部属性,因此对象实例化无法访问原型,而其属性都可供对象使用。可以通过在对象上使用 Object.getPrototypeOf() 方法获取 [[prototype]] 属性的值。
var obj = new Object();
var prototype = Object.getPrototypeOf(obj);
console.log(prototype == Object.prototype);
这是否意味着 ECMAScript 定义的内部属性不可用于编程?它们用于javascript引擎的实现?
是的。它们仅用于实现目的,不需要"真实姓名"。您可以在 #8.6.2 对象内部属性和方法中阅读有关此内容的信息。
常用的例子是内部属性 [[prototype]],所有对象都有一个,但你不能直接访问它,例如。
function foo(){
this.first = "hi"
this.second = something
}
foo.prototype = {
constructor : foo,
anotherProp : "hello"
}
var obj = new foo();
console.log(obj.anotherProp); //hello
//here the runtime will look in obj for anotherProp and
//fail to find it so it will look in obj's internal property
//[[prototype]] which is pointing to the object foo.prototype
因此,您可以访问内部属性 [[prototype]] 指向的对象,但不能直接通过内部 [[prototype]] 属性访问,该属性仅供运行时使用,而不是供程序员使用。
它们用于如何实现 JavaScript 引擎的示例。
- 如果 JS 中的函数是一流的,那么在定义它们之前允许调用它们是什么
- 什么'这是JS中以下定义方式的区别
- 为Google闭包类定义属性的首选方式是什么
- 定义js函数时冒号的含义是什么
- 什么'获取数组的已定义部分的最快方法是什么?JS
- 定义这些对象有什么区别
- 什么更快?运行空函数或检查函数是否未定义
- [未定义] 和 [,] 有什么区别
- 在jQuery方法中编写自定义属性的正确语法是什么
- 未定义===未定义比较什么
- 如果我们使用:运算符在函数内部定义一个属性,会发生什么
- 检查链接对象形式中未定义属性的最佳实践是什么
- 是'未定义'虚假或什么都没有
- 在 javaScript 中定义函数之前,什么意思是“一个单词:”
- 当生成正态分布的随机值时,定义范围的最有效方法是什么
- 当我单击标记而不是删除它时,我应该做些什么来创建自定义菜单
- 自定义过滤器的问题,我缺少什么
- 使用方法和属性定义javascript对象的最佳方法是什么?(如果可能以本机方式)
- 如果我使用 Jint 引擎在 JavaScript 代码中定义一个 .Net 类会发生什么
- 什么定义了 JavaScript 中的对象长度