【js】Object.prototype.hasOwnProperty()
2018-11-20 03:17:19来源:博客园 阅读 ()
hasOwnProperty()
方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性
例如:obj.hasOwnProperty(prop)
1. 所有 Object
的对象都会有 hasOwnProperty
方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in
运算符不同,该方法会忽略掉那些从原型链上继承到的属性。
var obj = function(){ } obj.target = function(){ } obj.prototype.target_proto = function(){ } console.log(obj.hasOwnProperty('target')) console.log(obj.hasOwnProperty('target_proto'))
2. 继承到的属性全为 false
var obj = { target: '123' } console.log(obj.hasOwnProperty('target')) // true console.log(obj.hasOwnProperty('toString')) // false console.log(obj.hasOwnProperty('hasOwnProperty')) // false
3. 遍历对象的自身属性
遍历一个对象的所有属性时忽略掉继承属性,这里因为for... in 循环无法遍历到不可枚举属性所以如果是自身属性的不枚举属性也是无法遍历返回得到的。
var obj = function(){ this.name = '0' } obj.prototype.fu = function(){ } var objk = new obj() console.log(objk) Object.defineProperty(objk,'kk',{ value: 'kk', enumerable: false }) for(var key in objk){ if(objk.hasOwnProperty(key)){ console.log('属性' + key , '属性值' + objk[key]) }else{ console.log('未找到属性' + key) } } console.log(objk.hasOwnProperty('kk'))
4. 使用 hasOwnProperty 作为属性名
由于jacascript是不保护 hasOwnProperty 属性名的,因此某个对像肯能存在这个属性名。此时需要使用 object.prototype 的属性来判断
Object.prototype.hasOwnPorperty.call(objk,'kk')
5. 如果像直接获取对象的所有属性的数组可用Object.getOwnPropertyNames() 来获取
本文所讨论内容多参考于
Object.prototype.hasOwnProperty()
JavaScript中的可枚举属性与不可枚举属性
JavaScript中toStirng()与Object.prototype.toString.call()方法浅谈
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash