如何在自定义Object.prototype.xxx函数中获取对象本身?

时间:2017-09-29 14:38:23

标签: javascript object

{{1}}

如您所见,我想为所有Object值创建一个函数。我需要在此函数中获取对象值然后执行某些操作。

1 个答案:

答案 0 :(得分:2)

函数体应该返回this.b。您可以使用this关键字获取对象本身,该关键字仅在适当的函数表达式中起作用,而不是在箭头函数中。

如果你真的想改变原型,这是一种更好的方法,预先检查函数的存在并使属性描述符更符合现有方法:

if(!Object.prototype.hasOwnProperty("getB")){
  Object.defineProperty(Object.prototype, "getB", {
    enumerable: false,
    writable: true,
    configurable: true,
    value: function getB(){
      return this.b;
    }
  });
}

或者,如果支持ECMAScript 6 shorthand method names,这种方法会稍好一些,因为它会使getB成为一种不可构造的方法,这更符合现有方法。

if(!Object.prototype.hasOwnProperty("getB")){
  Object.defineProperty(Object.prototype, "getB", {
    enumerable: false,
    writable: true,
    configurable: true,
    value: {
      getB(){
        return this.b;
      }
    }.getB
  });
}