JavaScript检测实例属性, 原型属性
JavaScript检测实例属性, 原型属性
发布时间:2016-12-30 来源:查字典编辑
摘要:0.前提JavaScript对象的属性分为两种存在形态.一种是存在实例中,另一是存在原型对象中.根据上述,检测属性的时候会出现4种情况既不存...

0.前提

JavaScript对象的属性分为两种存在形态. 一种是存在实例中, 另一是存在原型对象中.

根据上述, 检测属性的时候会出现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)); //true

console.log(person2.hasOwnPrototype(name)); //false

2.in操作符

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

复制代码 代码如下:

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

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

3.检测存在原型的属性

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

复制代码 代码如下:

function hasPrototypeProperty(object, name) {

return !object.hasOwnPrototype(name) && (name in object);

}

console.log(hasPrototypeProperty(person1, 'name'));//false

console.log(hasPrototypeProperty(person2, 'name'));//true

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

以上就是本文的全部内容了,希望大家能够喜欢

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类