我对原型不是很熟悉,我确信这是不正确的实现,但我已经整理了一个我试图实现的小示例。
我可以使原型成为文本对象而不是函数,但是我遇到了无法访问正在创建原型的对象(在本例中为Person)内的变量/属性的问题。
Person = function() {
this.name = 'mike';
this.departureSaying = 'Adios amigo!';
}
Person.prototype.say = function() {
var self = this;
function hello() { alert('hello my name is ' + self.name); }
function goodbye() { alert(self.departureSaying); }
}
var mike = new Person();
mike.say.hello();
mike.say.goodbye();如果你运行这个命令,你会得到Object has no method hello和Object。
发布于 2012-07-01 08:48:18
您的两个函数是该方法的本地函数;您不会返回它们。
Person.prototype.say = function() {
var self = this;
return {
hello: function() { alert('hello my name is ' + self.name); },
goodbye: function() { alert(self.departureSaying); }
};
};然后你会想要:
mike.say().hello();
mike.say().goodbye();然而,我不认为在这种情况下使用原型是正确的。在构造函数中指定它,而不是:
function Person() {
var self = this;
this.name = 'mike';
this.departureSaying = 'Adios amigo!';
this.say = {
hello: function() { alert('hello my name is ' + self.name); },
goodbye: function() { alert(self.departureSaying); }
};
}Here's a demo.
https://stackoverflow.com/questions/11278774
复制相似问题