星空网 > 软件开发 > Java

JavaScript检测实例属性, 原型属性

0.前提

  • JavaScript对象的属性分为两种存在形态. 一种是存在实例中, 另一是存在原型对象中.
  • 根据上述, 检测属性的时候会出现4种情况
    1. 既不存在实例中, 也不存在原型对象中
    2. 存在实例中, 不存在原型对象中
    3. 不存在实例中, 存在原型对象中
    4. 既存在实例中, 也存在原型对象中

1.hasOwnPrototype()

hasOwnPrototype()接受一个字符串格式的属性名称, 如果实例本身存在该属性(情况2/情况4), 返回true. 否则, 返回false(情况1/情况3).

functino Person() {}Person.prototype.name = 'apple';var person1 = new Person();var person2 = new Person();person1.name = 'banana';console.log(person1.hasOwnPrototype(name)); //trueconsole.log(person2.hasOwnPrototype(name)); //false

2.in操作符

in操作符无论属性是存在实例本身中, 还是原型对象中, 就会返回true(情况2/情况3/情况4); 否则, 返回false(情况1).

console.log('name' in person1); //trueconsole.log('name' in person2); //true

3.检测存在原型的属性

结合in操作符和hasOwnProperty()就可以自定义函数来检测原型中是否存在给定的属性.

function hasPrototypeProperty(object, name) {   return !object.hasOwnPrototype(name) && (name in object);}console.log(hasPrototypeProperty(person1, 'name')); //falseconsole.log(hasPrototypeProperty(person2, 'name')); //true

原型中存在给定属性, 返回true(情况3). 否则返回false(情况1/情况2/情况4).




原标题:JavaScript检测实例属性, 原型属性

关键词:JavaScript

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Meesho卖家申请:https://www.goluckyvip.com/tag/22864.html
Meesho入驻:https://www.goluckyvip.com/tag/22865.html
Meesho新手开店:https://www.goluckyvip.com/tag/22866.html
Meest:https://www.goluckyvip.com/tag/22867.html
MeetEdgar:https://www.goluckyvip.com/tag/22868.html
MeetMe:https://www.goluckyvip.com/tag/22869.html
独家丨B站广告位可跳转美团APP B站为电商平台引流再升级 :https://www.kjdsnews.com/a/1836410.html
百崖大峡谷生态旅游景区(探秘中国西南自然风光):https://www.vstour.cn/a/363176.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流