在Object.defineProperties中引用self对象

时间:2016-09-22 23:40:48

标签: javascript

我正在尝试扩展基础Object对象以包含所有对象的join函数。代码看起来像这样(显然不是有效的代码):

function is_scalar(obj){return (/string|number|boolean/).test(typeof obj);}
Object.defineProperties(Object.prototype, {
    "join": {
        value: (seperator = " ", recursive = false) => {
            var out = [];
            Object.keys(Object).forEach((prop) => {
                if (Array.isArray(Object[prop])) {
                    out.push(Object[prop].join(seperator));
                }
                else if(is_scalar(Object[prop])){
                    out.push(Object[prop]);
                }
            });
            return out.join(seperator);
        },
        enumerable: false
    }
});

问题是我不知道如何引用Object.Keys子句的实例对象。

努力

我已经尝试了this,但它引用了window对象。

我也尝试过使用ObjectObject.prototype,两者都显示为空。

1 个答案:

答案 0 :(得分:1)

Don't use an arrow function.

Object.defineProperties(Object.prototype, {
  "join": {
    value: function (seperator = " ", recursive = false) {
      console.log(this);
    },
    enumerable: false
  }
});


({}).join()