Javascript obj中的道具与obj中的道具之间的差异。hasOwnProperty(道具)与obj[prop]?
我应该用一个而不是另一个吗?同时使用它们是否更好?谢谢。Javascript obj中的道具与obj中的道具之间的差异。hasOwnProperty(道具)与obj[prop]?,javascript,Javascript,我应该用一个而不是另一个吗?同时使用它们是否更好?谢谢。 obj中的prop检查obj是否有名为prop的属性,即使它只是从原型继承的 obj.hasOwnProperty(prop)检查obj本身是否拥有名为prop的属性;它忽略从原型继承的属性 obj[prop]获取prop属性的值 使用任何一个适合你想要完成的事情 注意:在所有三种情况下,prop必须是字符串。仅举一个例子: var animal = {"legs": 4}; var dog = {"barks" : true}; do
- obj中的
检查prop
是否有名为obj
的属性,即使它只是从原型继承的prop
检查obj.hasOwnProperty(prop)
本身是否拥有名为obj
的属性;它忽略从原型继承的属性prop
获取obj[prop]
属性的值prop
注意:在所有三种情况下,
prop
必须是字符串。仅举一个例子:
var animal = {"legs": 4};
var dog = {"barks" : true};
dog.__proto__ = animal; // JS inheritance (dog inherits from animal)
这意味着:console.log("legs" in dog); // TRUE - due to JS inheritance and since 'in' key looks into inherited prototypes
console.log(dog.hasOwnProperty("legs")); // FALSE
console.log(dog.hasOwnProperty("barks")); //TRUE
印刷品
true
false
true
4
5
true
请注意,还有一件事:如果dog的“legs”属性为let say 5(我知道hhmm spooky),那么“in”操作符(“dog中的legs”)将引用dog对象中声明的“legs”属性,而不是继承自animal对象的“legs”。e、 g:
var animal = {"legs": 4};
var dog1 = {"barks": true};
var dog2 = {"barks": true, "legs": 5};
dog1.__proto__ = animal;
dog2.__proto__ = animal;
console.log(dog1.legs);
console.log(dog2.legs);
console.log("legs" in dog2) // 'in' refer to the un-inherited "legs" of dog2
印刷品
true
false
true
4
5
true
,更新链接:。你能告诉我obj.prop和obj['prop']之间是否有区别吗?渣