这可能是一个非常基本的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中保留的关键字/属性?或者我在这里缺少的其他东西?
答案 0 :(得分:5)
来自MDN:
您无法更改函数的
name
,此属性为只读
来自ECMA-262 6th Edition / Draft April 27, 2014:
此属性具有{[[Writable]]:false,
属性
答案 1 :(得分:0)
你写了obj.name = 'soemthing';
而不是obj.name = 'something';
:)