将存储在变量中的函数指定为对象文字中的getter

时间:2018-03-20 17:19:23

标签: javascript

说我有一个功能。如果我想将它作为方法添加到对象中,我会使用:

let foofunc = function() {}
{
  foo: foofunc
}

但是,如果我想将其添加为吸气剂怎么办?你认为我可以这样做:

{
  get x: foofunc
}

但我的IDE抱怨,所以我认为这是不可能的。我该怎么做?

2 个答案:

答案 0 :(得分:6)

您可以使用Object.defineProperty功能,如下所示:

function getterFunc() { return 1; }
let anObject = {};
Object.defineProperty(anObject, 'propertyName', {get: getterFunc});

直播示例:



function getterFunc() { return 1; }
let anObject = {};
Object.defineProperty(anObject, 'propertyName', {get: getterFunc});
console.log(anObject.propertyName); // 1




您可以通过执行anObject.propertyName来正常访问使用getter。 如果您还有更多问题,MDN page会提供更详细的信息。

答案 1 :(得分:-1)

使其成为吸气功能..

let foofunc = function() { return this.x;}

let obj = {
  x: "marvel",
  get foo(){return foofunc.call(this)}
};

使用:

console.log(obj.foo);