Javascript原型对象

时间:2015-07-03 14:18:37

标签: javascript object prototype

我试图创建一个包含其他对象和函数的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原型来做到这一点。

1 个答案:

答案 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);
};