Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ECMAScript中定义的内部属性是什么?_Javascript_Ecmascript 5 - Fatal编程技术网

Javascript ECMAScript中定义的内部属性是什么?

Javascript ECMAScript中定义的内部属性是什么?,javascript,ecmascript-5,Javascript,Ecmascript 5,ECMAScript中的定义是为了什么?规范的意思是什么 本规范使用各种内部属性来定义 对象值的语义。这些内部属性不是 ECMAScript语言。它们由本规范定义 纯粹为了说明的目的 这是否意味着ECMAScript定义的内部属性不可用于编程。它们用于javascript引擎的实现 它们在如何实现JavaScript引擎的示例中使用 这是否意味着ECMAScript定义的内部属性不可用于编程。它们用于javascript引擎的实现 对。它们仅用于实现目的,不需要“真实姓名”。您可以在中了解这一点

ECMAScript中的定义是为了什么?规范的意思是什么

本规范使用各种内部属性来定义 对象值的语义。这些内部属性不是 ECMAScript语言。它们由本规范定义 纯粹为了说明的目的

这是否意味着ECMAScript定义的内部属性不可用于编程。它们用于javascript引擎的实现

它们在如何实现JavaScript引擎的示例中使用

这是否意味着ECMAScript定义的内部属性不可用于编程。它们用于javascript引擎的实现


对。它们仅用于实现目的,不需要“真实姓名”。您可以在中了解这一点。

经常使用的示例是内部属性[[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]]属性访问对象,该属性只供运行时使用,不供程序员使用。

内部属性定义代码执行时的行为,但不能通过代码访问。ECMAScript为JavaScript中的对象定义了许多内部属性。内部属性用双方括号表示

例如,JavaScript函数是一个对象,它具有[[call]]属性。[[call]]属性是函数的唯一属性

另一个内部属性示例是[[prototype]]属性。此属性是指向实例正在使用的原型对象的指针。由于无法通过代码访问内部属性,因此当对象的所有属性都可用时,对象实例化无法访问原型。通过对对象使用Object.getPrototypeOf()方法,可以获取[[prototype]]属性的值

var obj = new Object();
var prototype = Object.getPrototypeOf(obj);
console.log(prototype == Object.prototype);