javascript对象名称属性

时间:2014-05-19 10:17:20

标签: javascript

这可能是一个非常基本的JavaScript概念,但我找不到正确的答案,所以在这里提出问题。

var obj = {};
var fn = function() {};
obj.name = 'something';
fn.name = 'something';

if (obj.name == fn.name) { console.log('both objects have same property'); }

在上面的代码中,if块不会执行。如果我使用像.prop这样的东西,而不是.name,它可以工作。

obj.prop = 'something';
fn.prop = 'something';

对于上述值,执行if块。

为什么if块是针对第一种情况执行的,而不是针对第二种情况执行的。是.name js中保留的关键字/属性?或者我在这里缺少的其他东西?

2 个答案:

答案 0 :(得分:5)

来自MDN

  

您无法更改函数的name,此属性为只读

来自ECMA-262 6th Edition / Draft April 27, 2014

  

此属性具有{[[Writable]]:false,

属性

答案 1 :(得分:0)

你写了obj.name = 'soemthing';而不是obj.name = 'something';:)