Javascript 原型方法不是一个函数,为什么?
我想把函数和类移到ready函数中,以使代码干净并节省内存,但我发现class方法不起作用 如果我将原型移动到测试功能,它就会工作,比如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');
(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);
}