在其参数中获取函数本身

时间:2016-04-25 06:44:22

标签: javascript

有一个将给定属性应用于DOM元素的简单函数:

Object.prototype.setAttr = function(attr) { // attr is an object
  for ( var i in attr )
     this.setAttribute( i, atr[i] );
};

除了传递的参数之外,还有函数setAttr本身。任何人都可以解释这种行为吗?

1 个答案:

答案 0 :(得分:3)

您需要使用hasOwnProperty来避免循环遍历原型链。

由于attr是一个对象,并且您已将setAttr添加到Object的原型中,因此attr还可以通过其原型链访问setAttr方法。

Object.prototype.setAttr = function(attr) { // attr is an object
  for (var i in attr) {
    if (attr.hasOwnProperty(i))
      this.setAttribute(i, attr[i]);
  }
};


item.setAttr({
  b: 1
});
<pre id="result"></pre> 
<p id="item">item</p>