我应该使用一个而不是另一个吗?把它们放在一起使用会更好吗?谢谢。
发布于 2011-09-28 10:36:47
即使只是从prototype.
obj.hasOwnProperty(prop)继承,prop in obj也会检查obj是否具有名为prop的属性;它会忽略从prototypes.obj[prop]继承的属性,并获取prop属性的值。根据您要完成的任务,使用任何合适的选项
注意:在这三种情况下,prop都必须是一个字符串。
发布于 2015-12-16 23:58:57
举个例子:
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注意一件事:如果狗有“腿”属性,假设是5(嗯,我知道),那么“in”操作符(狗中的“腿”)将引用在狗对象中声明的“腿”属性,而不是继承的来自动物对象的“腿”。例如:
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 打印
4
5
truehttps://stackoverflow.com/questions/7577715
复制相似问题