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 相关文章推荐
javascript CSS画图之基础篇
Jul 29 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 Javascript
jQuery大于号(>)选择器的作用解释
Jan 13 Javascript
使用vue.js开发时一些注意事项
Apr 27 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
Dec 22 Javascript
JavaScript实现开关等效果
Sep 08 Javascript
基于复选框demo(分享)
Sep 27 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
Jan 12 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
Feb 05 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 06 Javascript
javascript异常处理实现原理详解
Feb 17 Javascript
jQuery实现回到顶部效果
Oct 19 jQuery
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
PHP使用数组实现队列
2012/02/05 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
python编写爬虫小程序
2015/05/14 Python
基于Python实现文件大小输出
2016/01/11 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
应聘收银员个人的求职信
2013/11/30 职场文书
环境科学专业个人求职信
2013/12/15 职场文书
怎样客观的做好自我评价
2013/12/28 职场文书
光盘行动倡议书
2014/02/02 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
2014年工人工作总结
2014/11/25 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
迎新年主持词
2015/07/06 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
redis数据一致性的实现示例
2022/03/18 Redis
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA