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

时间:2015-01-22 22:46:45

标签: javascript

(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
}

我想将函数和类移出到ready函数以使代码清理并节省内存,但我发现类方法不起作用。

如果我将原型移动到测试功能,它就像

一样工作
(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); 
}

为什么我必须将原型方法移动到测试或准备好功能?

1 个答案:

答案 0 :(得分:2)

因为您的.prototype.mod定义是之后调用它的函数。提升仅对函数定义本身有帮助(这就是new Class()正常工作的原因),而不是原型定义。

这真的不应该那么难:首先准备你的工具,然后使用它们。