在其参数中获取函数本身

getting function itself among its parameters

本文关键字:函数 获取 参数      更新时间:2023-09-26

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

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

除了传递的参数之外,我还得到了函数setAttr本身。 谁能解释这种行为?

你需要使用 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>