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 相关文章推荐
TreeView 用法(有代码)(asp.net)
Jul 15 Javascript
JavaScript 的继承
Oct 01 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
Oct 11 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
Jun 24 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
Mar 19 Javascript
JavaScript函数获取事件源的小例子
May 14 Javascript
jQuery监控文本框事件并作相应处理的方法
Apr 16 Javascript
超赞的动手创建JavaScript框架的详细教程
Jun 30 Javascript
AngularJS监听路由的变化示例代码
Sep 23 Javascript
详解AngularJS脏检查机制及$timeout的妙用
Jun 19 Javascript
vue2.0 根据状态值进行样式的改变展示方法
Mar 13 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 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
Php注入点构造代码
2008/06/14 PHP
php生成验证码函数
2015/10/20 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
javascript json 新手入门文档
2009/12/03 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
Python BS4库的安装与使用详解
2018/08/08 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
大学应届生求职简历的自我评价
2013/10/08 职场文书
会计主管岗位职责
2014/01/03 职场文书
幼儿教师培训感言
2014/03/08 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
个人租房协议书样本
2014/10/01 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python