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 圆角div的实现代码
Oct 15 Javascript
jQuery调用WebService的实现代码
Jun 19 Javascript
跟我学习javascript的函数和函数表达式
Nov 16 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
Nov 29 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
Apr 07 Javascript
微信小程序通过保存图片分享到朋友圈功能
May 24 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
Mar 16 Javascript
微信小程序在其他页面监听globalData中值的变化
Jul 15 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
Aug 20 Javascript
vue实现数据控制视图的原理解析
Jan 07 Javascript
解决新建一个vue项目过程中遇到的问题
Oct 22 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
Jan 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
PHP Ajax中文乱码问题解决方法
2009/02/27 PHP
php 获取可变函数参数的函数
2009/08/26 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
Python易忽视知识点小结
2015/05/25 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
python实现画图工具
2020/08/27 Python
Pycharm中如何关掉python console
2020/10/27 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
查询优化的一般准则有哪些
2015/03/08 面试题
财务工作个人求职的自我评价
2013/12/19 职场文书
应届生如何写自荐信
2014/01/05 职场文书
大学生自我鉴定评语
2014/01/27 职场文书
服装创业计划书范文
2014/02/05 职场文书
家属慰问信
2015/02/14 职场文书
秋季运动会加油词
2015/07/18 职场文书
初中班主任教育随笔
2015/08/15 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js