我想定义一个只读对象属性,它异步获取一个值,然后使用新的 EcmaScript 5 getter 返回它。
undefined
但是,即使magicValue
在下面的示例代码中绝对不会未定义,该属性也会始终返回。另外,当我刚刚return 'xxx';
打印的值仍然是undefined
. 仅当我return
在回调函数之外时才有效。
无论是否调用了回调,似乎return
都在立即执行myAsyncFunction
。我不确定这是否是 V8 中的错误,或者我是否在滥用 JavaScript 的 getter。
我可以让它工作吗?我想,既然我现在可以使用 getter 和 setter,我将使用 getter/setter 来读写属性和常规函数来完成某些任务。
var User = function (id) {
this.id = id;
};
Object.defineProperty(User.prototype, 'magic', {
get : function () {
myAsyncFunction(function (magicValue) {
return magicValue;
});
}
});
var u = new User(5);
console.log(u.magic);
打印undefined
。