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 相关文章推荐
用js模拟JQuery的show与hide动画函数代码
Sep 20 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
Dec 20 Javascript
jquery怎样实现ajax联动框(一)
Mar 08 Javascript
使用pjax实现无刷新更改页面url
Feb 05 Javascript
JavaScript让Textarea支持tab按键的方法
Jun 26 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
Jun 12 Javascript
使用bootstrap实现多窗口和拖动效果
Sep 22 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
Feb 22 Javascript
深入对Vue.js $watch方法的理解
Mar 20 Javascript
12个非常有用的JavaScript技巧
May 17 Javascript
jQuery实现html双向绑定功能示例
Oct 09 jQuery
Vue.js使用axios动态获取response里的data数据操作
Sep 08 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 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
php 实现进制相互转换
2016/04/07 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
意大利奢侈品网站:Italist
2016/08/23 全球购物
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
新东网科技Java笔试题
2012/07/13 面试题
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
3的组成教学反思
2014/04/30 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
2015年班干部工作总结
2015/04/29 职场文书
《我的长生果》教学反思
2016/02/20 职场文书