Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript obj中的道具与obj中的道具之间的差异。hasOwnProperty(道具)与obj[prop]?_Javascript - Fatal编程技术网

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']之间是否有区别吗?渣