JavaScript检测实例属性, 原型属性
作者:hebedich 发布时间:2024-04-18 09:40:54
标签:JavaScript,实例属性,原型属性
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).
0
投稿
猜你喜欢
- 一、如何实现可迭代对象和迭代器对象?实际案例某软件要求从网络抓取各个城市气味信息,并其次显示:北京: 15 ~ 20 天津: 17 ~ 22
- Python 在 2.2 版本中引入了descriptor(描述符)功能,也正是基于这个功能实现了新式类(new-styel class)的
- 1、注册一个新浪应用,得到appkey和secret,以及token,将这些信息写入配置文件sina_weibo_config.ini,内容
- '****'函数名称: strReplace(Str)'函数功能: 过滤单引号'参数说明: Str 
- 使用pytorch的dataloader报错:RuntimeError: stack expects each tensor to be e
- 如果一个应用程序需要登录,则它必须知道当前用户执行了什么操作。因此ASP.NET在展示层提供了一套自己的SESSION会话对象,而ABP则提
- 大家是否经常遇到在关闭网页的时候,会看到一个确定是否离开当前页面的提示框?想一些在线测试系统、信息录入系统等就经常会有这一些提示,避免用户有
- 昨日,女票拿了一个Excel文档,里面有上万条数据要进行分析,刚开始一个字段分析,Excel用的不错,还能搞定,到后来两个字段的分析,还有区
- 方法:通过wxs定义indexOf方法,在页面中引用并使用栗子:wxs:命名为str.wxs,导出定义的defineIndexOf方法,命名
- 中间件是一个钩子框架,它们可以介入 Django 的请求和响应处理过程。 它是一个轻量级、底层的 插件 系统,用于在 全局修改 Django
- 所谓“分块”,顾名思义,就是将数据集分成几块进行读取,比如有105条数据,一次读取10条,读取11次
- 本文实例讲述了Python中itertools模块用法,分享给大家供大家参考。具体分析如下:一般来说,itertools模块包含创建有效迭代
- 1.题目2.代码#共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。n,m=map(int,input
- 常见的一种应用场景:条件:假设A的shape为[4, 2],B的shape为[5, 2]目的:实现A中的每一行, 减去B中的所有行(broa
- 建造者模式建造者模式用于创建复杂的对象。使用建造者模式可以使复杂的过程层次明了、清晰,把对象的创建以及使用进行了解耦。实际上从代码的角度上看
- 本文实例讲述了python sqlite的Row对象操作。分享给大家供大家参考,具体如下:一 代码import sqlite3conn=sq
- 本文实例为大家分享了javascript实现简单计算器的具体代码,供大家参考,具体内容如下设计一个简单的计算器代码 <body>
- 视频本教程的视频碰撞碰撞是游戏开发的基本组成部分。碰撞检测就是要检测游戏中的一个对象是否正在接触另一个对象。碰撞处理决定了当碰撞发生时你想要
- 功能描述抽奖系统包含如下特点:1、可给不同抽奖者设置不同的权重2、先从价值高的奖品开始抽3、已经中奖的人,不再参与后续的抽奖代码第一个数字表
- SQL*DBA命令的安全性: 如果您没有SQL*PLUS应用程序,您也可以使用SQL*DBA作SQL查权限相关的命令只能分配给Oracle软