首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >obj和obj.hasOwnProperty中的prop (Prop)和obj[prop]之间的区别?

obj和obj.hasOwnProperty中的prop (Prop)和obj[prop]之间的区别?
EN

Stack Overflow用户
提问于 2011-09-28 10:34:02
回答 2查看 2.6K关注 0票数 9

我应该使用一个而不是另一个吗?把它们放在一起使用会更好吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-28 10:36:47

即使只是从prototype.

  • obj.hasOwnProperty(prop)继承,
  • prop in obj也会检查obj是否具有名为prop的属性;它会忽略从prototypes.
  • obj[prop]继承的属性,并获取prop属性的值。

根据您要完成的任务,使用任何合适的选项

注意:在这三种情况下,prop都必须是一个字符串。

票数 23
EN

Stack Overflow用户

发布于 2015-12-16 23:58:57

举个例子:

代码语言:javascript
复制
var animal = {"legs": 4};
var dog = {"barks" : true};
dog.__proto__ = animal;    // JS inheritance (dog inherits from animal)

现在这意味着:

代码语言:javascript
复制
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

打印

代码语言:javascript
复制
true
false
true

注意一件事:如果狗有“腿”属性,假设是5(嗯,我知道),那么“in”操作符(狗中的“腿”)将引用在狗对象中声明的“腿”属性,而不是继承的来自动物对象的“腿”。例如:

代码语言:javascript
复制
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 

打印

代码语言:javascript
复制
4
5
true
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7577715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档