(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
}
Run Code Online (Sandbox Code Playgroud)
我想将函数和类移出就绪函数以使代码清理并节省内存,但我发现类方法不起作用。
如果我将原型移动到测试功能,它会起作用,就像
(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);
}
Run Code Online (Sandbox Code Playgroud)
为什么我必须将原型方法移动到测试或就绪功能?
因为您的.prototype.mod定义在调用它的函数之后。提升只对函数定义本身有帮助(这就是为什么new Class()工作正常),而不是原型定义。
这真的不应该那么难:首先准备你的工具,然后使用它们。