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).

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

相关文章

  • 详解 Map 和 WeakMap 区别以及使用场景

    详解 Map 和 WeakMap 区别以及使用场景

    这篇文章主要介绍了详解 Map 和 WeakMap 区别以及使用场景,Map本质上是一个键值对的集合,WeakMap 只能将对象作为键名,下面来一起俩姐更多详细内容吧,希望这一篇文章能让你对 Map 有更好的理解,或者能够帮你理解 Map 和 WeakMap
    2022-01-01
  • JavaScrip常见的一些算法总结

    JavaScrip常见的一些算法总结

    这篇文章主要介绍了JavaScrip常见的一些算法总结的相关资料,需要的朋友可以参考下
    2015-12-12
  • 解决前端使用xlsx.js工具读取excel遇到时间日期少43秒问题

    解决前端使用xlsx.js工具读取excel遇到时间日期少43秒问题

    这篇文章主要给大家介绍了关于如何解决前端使用xlsx.js工具读取excel遇到时间日期少43秒问题的相关资料,xlsx.js是一种前端库,它可以使您使用JavaScript读取、解析和导出电子表格文件,如Microsoft Excel,需要的朋友可以参考下
    2024-03-03
  • javascript设计模式之单体模式学习笔记

    javascript设计模式之单体模式学习笔记

    这篇文章主要为大家详细介绍了javascript设计模式之单体模式学习笔记,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 深入探讨TypeScript中类与接口的使用

    深入探讨TypeScript中类与接口的使用

    TypeScript是一种强大的编程语言,它在JavaScript的基础上添加了静态类型检查,使得代码更加可维护和类型安全,在TypeScript中,类和接口是构建复杂应用程序的关键组成部分,本文将深入探讨TypeScript中类与接口的使用,需要的朋友可以参考下
    2023-09-09
  • JS函数的返回值如何使用

    JS函数的返回值如何使用

    函数是一块js代码块,被定义一次但可以执行和调用多次,js中的函数也是对象可以像其他对象那样操作和执行,js函数也被称为函数对象,本文给大家介绍JS函数的返回值如何使用,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • django admin 使用SimpleUI自定义按钮弹窗框示例

    django admin 使用SimpleUI自定义按钮弹窗框示例

    Django 后台admin有大量的属性和方法,拥有强大的功能和自定义能力,这篇文章主要介绍了django admin 使用SimpleUI自定义按钮弹窗框示例,需要的朋友可以参考下
    2023-04-04
  • JS鲜为人知的问题之[] == ![]结果为true、而{} == !{}却为false

    JS鲜为人知的问题之[] == ![]结果为true、而{} == !{}却为false

    这篇文章主要给大家介绍了关于JS鲜为人知的问题之[] == ![]结果为true、而{} == !{}却为false的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 微信小程序开发指南之字体样式设置

    微信小程序开发指南之字体样式设置

    在小程序开发中 经常需要我们自定义字体样式,下面这篇文章主要给大家介绍了关于微信小程序开发指南之字体样式设置的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • javascript对象的相关操作小结

    javascript对象的相关操作小结

    下面小编就为大家带来一篇javascript对象的相关操作小结。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05

最新评论