我试图创建一个包含其他对象和函数的Object,在原型中,相关部分是UI原型;
var fChat = function() {
this.debug = true;
};
fChat.prototype = {
constructor: fChat,
Log: function(str){
if(this.debug){
console.log(str);
}
},
UI: {
Login: {
Show: function(){
this.Log("UI.Login.Show()");
}
}
}
};
var fChatInstance = new fChat();
fChatInstance.UI.Login.Show();
当我致电fChatInstance.UI.Login.Show()
时,它给我一个错误:
Uncaught TypeError: this.Log is not a function
这是因为使用this
是否在另一个范围内?
通常我会在原型开始时var self = this;
,但我不知道如何通过使用Object原型来做到这一点。
答案 0 :(得分:1)
是。问题是这个javascript动态绑定,修复它你可以使用bind函数将“this”设置为对象。改变fchat函数重构就像这样:
var fChat = function() {
this.debug = true;
this.UI.Login.Show = this.UI.Login.Show.bind(this);
this.Log = this.Log.bind(this);
};