汇盛国际:Javascript学习笔记之 对象篇(三) :

时间: 作者:该眼

  

[Javascript,hasOwnProperty]Javascript学习笔记之 对象篇(三) : hasOwnProperty

  
  
  // Poisoning Object.prototype  Object.prototype.bar = 1;  var foo = {goo: undefined};  foo.bar; // 1  'bar' in foo; // true  foo.hasOwnProperty('bar'); // false  foo.hasOwnProperty('goo'); // true
  
  

在这里,只有 hasOwnProperty 能给出正确答案,这在遍历一个对象的属性时是非常必要的。Javascript 中没有其他方法能判断一个属性是定义在对象本身还是继承自原型链。

  

  

hasOwnProperty 作为属性  

  

Javascript 并未将 hasOwnProperty 设为敏感词,这意味着你可以拥有一个命名为 hasOwnProperty 的属性。这个时候你无法再使用本身的 hasOwnProperty 方法来判断属性,所以你需要使用外部的 hasOwnProperty 方法来进行判断。汇盛国际

  

  
  
  var foo = {  hasOwnProperty: function() {  return false;  },  bar: 'Here be dragons'  };  foo.hasOwnProperty('bar'); // always returns false  // Use another Object's hasOwnProperty and call it with 'this' set to foo  ({}).hasOwnProperty.call(foo, 'bar'); // true  // It's also possible to use hasOwnProperty from the Object  // prototype for this purpose  Object.prototype.hasOwnProperty.call(foo, 'bar'); // true
  
  

总结  

  

当判断对象属性存在时,hasOwnProperty 是唯一可以依赖的方法。这里还要提醒下,当我们使用 for in loop 来遍历对象时,使用 hasOwnProperty 将会很好地避免来自原型对象扩展所带来的困扰。

  

(责任编辑:admin)

推荐图片Related

相关文章Related

查看更多热门新闻


首页 | 特效插件 | 常用代码 | 样式素材 | 脚本代码 | css特效

Copyright © 2017-2018 汇盛国际 版权所有

系统要求:本站自适应各终端浏览器分辨率

请使用Google、Firefox、IE9、百度浏览器登录网站

网站地图 | RSS订阅 | 汇盛国际平台