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

 更新时间:2015年02月04日 09:56:02   投稿:hebedich  
这篇文章主要介绍了JavaScript检测实例属性, 原型属性,需要的朋友可以参考下

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修改浏览器URL地址栏的实现代码

    使用JavaScript修改浏览器URL地址栏的实现代码

    这篇文章主要介绍了如何使用JavaScript修改浏览器URL地址栏,需要的朋友可以参考下
    2013-10-10
  • JS基于正则实现数字千分位用逗号分隔的方法

    JS基于正则实现数字千分位用逗号分隔的方法

    这篇文章主要介绍了JS基于正则实现数字千分位用逗号分隔的方法,涉及javascript正则表达式操作数字的相关实现技巧,需要的朋友可以参考下
    2017-06-06
  • js 动态生成json对象、时时更新json对象的方法

    js 动态生成json对象、时时更新json对象的方法

    下面小编就为大家带来一篇js 动态生成json对象、时时更新json对象的方法。小编觉的挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • JS简单生成随机数(随机密码)的方法

    JS简单生成随机数(随机密码)的方法

    这篇文章主要介绍了JS简单生成随机数(随机密码)的方法,简单分析了javascript随机数相关函数并结合具体实例形式分析了随机数的相关生成技巧,需要的朋友可以参考下
    2017-05-05
  • JavaScript判断浏览器类型的方法

    JavaScript判断浏览器类型的方法

    这篇文章主要介绍了JavaScript判断浏览器类型的方法,可实现针对IE、火狐、谷歌等浏览器的判断,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • javascript使用window.name解决跨域问题

    javascript使用window.name解决跨域问题

    window.name 的美妙之处:name 值在不同的页面(甚至不同域名)加载后依旧存在,并且可以支持非常长的 name 值(2MB)。
    2008-09-09
  • JS设置时间无效问题的解决办法

    JS设置时间无效问题的解决办法

    在发送短信息验证码的时候要用到js设置时间倒序问题,有时候会导致js失效问题,怎么办呢?今天小编给大家分享JS设置时间无效问题的解决办法,需要的朋友参考下吧
    2017-02-02
  • 从父页面读取和操作iframe中内容方法

    从父页面读取和操作iframe中内容方法

    在父页面中访问iframe中的各个元素与一般的访问页面元素无本质区别,无非是需要在父页面中事先获取需要处理的iframe对象,在获取iframe对象后,其操作基本没什么特别之处。
    2009-07-07
  • js 判断一个数字是不是2的n次方幂的实例

    js 判断一个数字是不是2的n次方幂的实例

    下面小编就为大家分享一篇js 判断一个数字是不是2的n次方幂的实例,具有很好的参考价值,希望对大家有所帮助
    2017-11-11
  • npm install 、npm install --save 和 npm install --save-dev的区别介绍

    npm install 、npm install --save 和&n

    这篇文章主要介绍了npm install 、npm install --save 和 npm install --save-dev的区别介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04

最新评论