javascript - 从基本方法内部调用prototype方法

时间:2014-08-19 15:02:38

标签: javascript prototype

如何在javascript中从对象的主函数/构造函数中调用原型函数。我尝试了以下,但它不起作用。我做错了什么?

var x = new myFunction('Hello World!');

function myFunction(name) {
    this.name = name;

    alert( toString() ); // not working
    alert( this.toString() ); // not working either
};

myFunction.prototype.toString = function() {  
    return 'My name is ' + this.name;
};

1 个答案:

答案 0 :(得分:1)

在设置原型之前,您正在创建myFunction的实例并在其上调用toString。

即使在声明之前你可以创建myFunction实例的原因是因为它是hoisted。然而,toString没有被提升,它会显示[Object object]。

解决方案是在完全声明对象后创建实例。

注意:构造函数应该以大写字母开头,因此它应该是MyFunction而不是myFunction,并且可能给它一个名称,实际上意味着像Person或Animal这样的东西,因为没有人会知道什么一个MyFunction是。

function myFunction(name) {
    this.name = name;
    //console.log is so much better than alert
    console.log('this is:',this,'this.toString:'
      , this.toString() );
};
myFunction.prototype.toString = function() {  
    return 'My name is ' + this.name;
};
var x = new myFunction('Hello World!');

有关原型的更多信息:Prototypical inheritance - writing up