以下对象是基于Nicholas Zakas的“面向对象的JavaScript编程原理”中的示例构建的。然而,有些东西我不能解决语法错误。当我尝试将其加载到浏览器中时,我在控制台中收到错误:“ReferenceError:owner_idx未定义”
任何人都知道如何修复它?
function Editor() {
Object.defineProperty(this, "program_idx", {
get: function() {
return program_idx;
},
set: function(newVal) {
program_idx = newVal;
},
enumerable: true,
configurable: true
});
Object.defineProperty(this, "owner_idx", {
get: function() {
return owner_idx;
},
set: function(newVal) {
owner_idx = newVal;
},
enumerable: true,
configurable: true
});
};
答案 0 :(得分:2)
好吧,“owner_idx未定义”。你为什么不定义它?
function Editor() {
var program_idx, owner_idx;
Object.defineProperty(this, "program_idx", {
get: function() {
return program_idx;
},
set: function(newVal) {
program_idx = newVal;
},
enumerable: true,
configurable: true
});
Object.defineProperty(this, "owner_idx", {
get: function() {
return owner_idx;
},
set: function(newVal) {
owner_idx = newVal;
},
enumerable: true,
configurable: true
});
};
var e = new Editor();
e.owner_idx = "foo";
console.log(e.owner_idx);
HOWEVER 如果您的唯一目的是获取/设置属性值(在存储/检索之前不转换它们,或者更改其值会影响其他属性),则不需要访问器方法。常规属性可以正常工作。