我同意前面的评论。调用 getter 函数以检索“json”值。
可能您也想声明 json 变量(除非您在某种全局范围内需要它)。
此外,您似乎混合和匹配了一些对象构造模式。功能模式,用于模拟闭包内的“私有”变量(如json
),但您还需要原型继承,因此您可以将 getter/setter 附加到this
构造函数内部。可以坚持一个吗?
例如:在封闭中诱捕私人。
function _bd() {
var json;
var that = {};
that.setJson = function(js) {
json = js;
}
that.getJson = function() {
return json;
}
return that;
}
var bd = _bd();
$.get("json.php", function(data) {
bd.setJson(data);
alert(bd.getJson());
},"json");
例如 OO 风格,带有构造函数。
function BD(){
this._json = null;
}
BD.prototype = {
getJson: function(){
return this._json;
},
setJson: function(json){
this._json = json;
}
};
var bd = new BD();
$.get("json.php", function(data) {
bd.setJson(data);
alert(bd.getJson());
},"json");
使用混合风格可能有充分的理由,但如果你坚持一种方法或另一种方法,它会有所帮助。
至于“真正的”吸气剂(恕我直言,不值得疯狂的语法),请尝试:
function BD(){
this._json = null;
}
Object.defineProperty(BD.prototype,"json",{
get: function(){
return this._json;
},
set: function(json){
this._json = json;
}
});
var bd = new BD();
bd.json = {a: "test"};
console.log(bd);