如何在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;
};
答案 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