我知道有很多关于私有/公共方法如何在JS中工作的主题,但它们都没有解决我目前遇到的问题。
如下所示,我只是想尝试访问公共方法 私人方法。
function Animal(name) {
this.name = name
}
Animal.prototype = (function()
{
var sitdown = function() {
console.log(this.name + ' sits down.');
standup();
};
return {
standup: function()
{
console.log(this.name+' stands up');
sitdown();
}
}
})();
var Tiger = new Animal("Tiger");
Tiger.standup();
一切正常,直到它进入standup()方法。
您能告诉我如何解决这个问题?
谢谢, 亚历克斯
答案 0 :(得分:1)
您未在standup
范围内定义功能var sit
,您需要更改代码,例如
Animal.prototype = (function()
{
var sit = function() {
console.log(this.name + ' sits down.');
standup();
};
function standup()
{
console.log(this.name+' stands up'); //`this` here is global object, not your created
}
return {
standup: standup
}
})();
UPDATE:更新后,OP意味着你需要这样的东西
Animal.prototype = (function()
{
var sitdown = function() {
console.log(this.name + ' sits down.');
standup.call(this);
},
standup = function (){
console.log(this.name+' stands up');
}
return {
standup: function()
{
sitdown.call(this);
}
}
})();
还有关于this
keyword
答案 1 :(得分:0)
删除返回,一切正常。
function Animal(name) {
this.name = name
}
Animal.prototype = (function()
{
var sit = function() {
console.log(this.name + ' sits down.');
standup();
};
var standup = function()
{
console.log(this.name+' stands up');
};
})();