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


Posted in Javascript onFebruary 04, 2015

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 相关文章推荐
prototype Element学习笔记(篇二)
Oct 26 Javascript
javascript 贪吃蛇实现代码
Nov 22 Javascript
JavaScript DOM学习第一章 W3C DOM简介
Feb 19 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
Dec 16 Javascript
jQuery判断元素上是否绑定了指定事件的方法
Mar 17 Javascript
JavaScript实现的链表数据结构实例
Apr 02 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
AngularJS ui-router (嵌套路由)实例
Mar 10 Javascript
利用jQuery解析获取JSON数据
Apr 08 jQuery
JavaScript面向对象精要(上部)
Sep 12 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
Jan 15 Javascript
用JS写一个发布订阅模式
Nov 07 Javascript
Jquery Ajax xmlhttp请求成功问题
Feb 04 #Javascript
js对字符的验证方法汇总
Feb 04 #Javascript
AngularJS内置指令
Feb 04 #Javascript
javascript内置对象操作详解
Feb 04 #Javascript
js判断文本框剩余可输入字数的方法
Feb 04 #Javascript
javascript 兼容各个浏览器的事件
Feb 04 #Javascript
浅谈js中变量初始化
Feb 03 #Javascript
You might like
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
[01:11:48]Fnatic vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
线程和进程的区别及Python代码实例
2015/02/04 Python
python中Genarator函数用法分析
2015/04/08 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
python二分查找算法的递归实现方法
2016/05/12 Python
Python 文件操作的详解及实例
2017/09/18 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
生物技术专业研究生自荐信
2013/09/22 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
员工拓展培训方案
2014/02/15 职场文书
优秀技术工人先进材料
2014/02/17 职场文书
商业融资计划书
2014/04/29 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
团代会开幕词
2015/01/28 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server