Javascript 原型方法不是一个函数,为什么?

Javascript 原型方法不是一个函数,为什么?,javascript,Javascript,我想把函数和类移到ready函数中,以使代码干净并节省内存,但我发现class方法不起作用 如果我将原型移动到测试功能,它就会工作,比如 (function(){ test(); }()); function Class(){ this.prop = 'hi'; } Class.prototype.mod = function(num){this.prop = num;} function test(){ var c = new Class(); c.mod('now');

我想把函数和类移到ready函数中,以使代码干净并节省内存,但我发现class方法不起作用

如果我将原型移动到测试功能,它就会工作,比如

(function(){
  test();
}());

function Class(){
  this.prop = 'hi';
}
Class.prototype.mod = function(num){this.prop = num;}

function test(){
  var c = new Class();
  c.mod('now'); // it'll say it's not a function
  alert(c.prop); // it's work
}

为什么我必须将prototype方法移动到test或ready函数?

因为您的
.prototype.mod
定义在调用它的函数之后。提升只对函数定义本身有帮助(这就是为什么
newclass()
可以很好地工作),而对原型定义没有帮助


这其实并不难:首先准备好工具,然后使用它们。

因为
.prototype.mod
定义在调用它的函数之后。提升只对函数定义本身有帮助(这就是为什么
newclass()
可以很好地工作),而对原型定义没有帮助


这真的不难:首先准备好工具,然后使用它们。

您称之为“就绪函数”的事实似乎表明您认为自执行函数(
(function(){…}())
)在执行之前等待页面加载,这是不正确的,这是一个自动执行的函数,我把这个js脚本放在页面底部,就像就绪一样。我想知道的是,把所有东西都放在自动执行函数中好吗?事实上,你称它为“ready function”,这似乎表明你认为自动执行函数(
(function(){…}())
)在执行前等待页面加载,这是不正确的,这是一个自动执行的函数,我把这个js脚本放在页面底部,就像就绪一样。我想知道的是,你是对的,顺便问一下,你有什么方法可以提升原型吗?你是对的,顺便问一下,你有什么方法可以提升原型吗?
(function(){
  test();
}());

function Class(){
  this.prop = 'hi';
}


function test(){
  Class.prototype.mod = function(num){this.prop = num;}
  var c = new Class();
  c.mod('now'); // it's ok
  alert(c.prop); 
}