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中append、insertBefore、after与insertAfter的简单用法与注意事项
Apr 04 Javascript
判断ie的两种简单方法
Aug 12 Javascript
JavaScript严格模式禁用With语句的原因
Oct 20 Javascript
node.js超时timeout详解
Nov 26 Javascript
jQuery的remove()方法使用详解
Aug 11 Javascript
JS两种类型的表单提交方法实例分析
Nov 28 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
Jul 13 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
Oct 16 Javascript
浅析vue中的MVVM实现原理
Mar 04 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 Javascript
javascript this指向相关问题及改变方法
Nov 19 Javascript
vue实现禁止浏览器记住密码功能的示例代码
Feb 03 Vue.js
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数据库非常慢的解决方法
2008/07/05 PHP
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
js charAt的使用示例
2014/02/18 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
vue 项目地址去掉 #的方法
2018/10/20 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
智能室内花园:Click & Grow
2021/01/29 全球购物
兼职业务员岗位职责
2014/01/01 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
防震减灾主题班会
2015/08/14 职场文书
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技