为什么不具有[[Value]]属性?

时间:2016-08-05 01:53:48

标签: javascript

似乎函数缺少其他对象属性上的[[Value]]属性:

function a() {
  console.log('Hello World');
}

var descriptor = Object.getOwnPropertyDescriptor(window, 'a');

// descriptor contains:

Object {writable: true, enumerable: true, configurable: false}

与:相比:

var person = {
  age: 1
};

var descriptor2 = Object.getOwnPropertyDescriptor(person, 'age');

// descriptor2 contains:

Object {value: 1, writable: true, enumerable: true, configurable: true}

为什么没有大多数常规对象属性的[[Value]]属性?我希望它包含实际的函数体代码,但看起来它不存在于函数中?

2 个答案:

答案 0 :(得分:4)

属性的值是函数还是数字对描述符/属性来说并不重要。描述符确实有value属性: enter image description here

控制台的工作原理并不是标准化的,所以为什么显示或不显示某些内容取决于实现。

不要盲目信任控制台,用代码验证你的假设。

答案 1 :(得分:0)

那是因为您使用浏览器隐藏了某些无意义的原因。只需使用另一个更好的devtools。

即使是如此简单的堆栈代码段也能正确显示该值:



< > : " / \ |
&#13;
&#13;
&#13;