Javascript原型的问题

Javascript原型的问题,javascript,function,scope,Javascript,Function,Scope,我正在努力使用JavaScript。只有在调用另一个函数中的init函数时,我才能使folling代码正常工作。如果我在timeout函数之外调用this.init()或this.init(),则它不起作用 var App = function() { var that = this; // Workaround var timeout = setTimeout(function(){ that.init();

我正在努力使用JavaScript。只有在调用另一个函数中的init函数时,我才能使folling代码正常工作。如果我在timeout函数之外调用this.init()或this.init(),则它不起作用

var App = function() {
    var that = this;       

    // Workaround
    var timeout = setTimeout(function(){            
        that.init();            
    },1);
};

var app = new App();

App.prototype.init = function() {    
    console.log('works');
};
谢谢你的帮助


干杯。

在实例化应用程序后,您正在分配原型。先做吧

var App = function() {
    this.init();
};

App.prototype.init = function() {    
    console.log('works');
};

var app = new App();

在实例化应用程序后,您将分配原型。先做吧

var App = function() {
    this.init();
};

App.prototype.init = function() {    
    console.log('works');
};

var app = new App();

在定义init之前不能调用它为什么在将init分配给原型之前要创建实例?在setTimeout()的情况下,它可以工作,因为您的脚本在意识到它不存在之前执行并读取新的prototype.init。您能解释一下吗?谢谢。因为您有一个构造函数,所以不需要
init
方法来完成构造函数的工作。我希望您的实际代码只是使用原型中的一些常用方法,并在构造函数中进行初始化。在定义init之前不能调用它。为什么在将init分配给原型之前要创建实例?在setTimeout()的情况下,它之所以有效,是因为您的脚本在意识到它不存在之前执行并读取了新的prototype.init。您能解释一下吗?谢谢。因为您有一个构造函数,所以不需要
init
方法来完成构造函数的工作。我希望您的实际代码只是使用原型中的一些常用方法,并在构造函数中进行初始化。