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 相关文章推荐
jQuery基础框架浅入剖析
Dec 27 Javascript
jquery实现邮箱自动补全功能示例分享
Feb 17 Javascript
jquery text()方法取标签中的文本
Jul 25 Javascript
如何利用JQuery实现从底部回到顶部的功能
Dec 27 Javascript
微信小程序通过api接口将json数据展现到小程序示例
Jan 20 Javascript
AngularJS日期格式化常见操作实例分析
May 17 Javascript
说说node中的可读流和可写流的区别
Jun 01 Javascript
jQuery 筛选器简单操作示例
Oct 02 jQuery
Vue中点击active并第一个默认选中功能的实现
Feb 24 Javascript
JS sort方法基于数组对象属性值排序
Jul 10 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
Sep 08 Javascript
JavaScript实现简单图片切换
Apr 29 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解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
php生成二维码
2015/08/10 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
详解Python中的Descriptor描述符类
2016/06/14 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
python 实现按对象传值
2019/12/26 Python
python常量折叠基础知识点讲解
2021/02/28 Python
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
护理学专业推荐信
2013/12/03 职场文书
初一英语教学反思
2014/01/11 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
python实现黄金分割法的示例代码
2021/04/28 Python
一文搞懂MySQL索引页结构
2022/02/28 MySQL