누구든지이 코드에 문제가 있다고 조언 해 주실 수 있습니까? 생성자에 설정된 변수는 객체 생성시에만 액세스 할 수 있지만 일단 객체의 메서드 중 하나를 호출하면 해당 변수에 더 이상 액세스 할 수 없습니다.생성자에서 변수를 설정할 수 없습니다.
function Animal(name) {
this.name = name
}
Animal.prototype = (function()
{
var i = 0;
var sitdown = function() {
console.log(this.name + ' sits down.');
standup();
};
var standup = function(){
console.log(this.name+' stands up');
if(i != 10)
{
i++;
sitdown();
}
};
return {
standup: standup
}
})();
var Tiger = new Animal("Tiger");
Tiger.standup();
출력 :
Tiger stands up
sits down.
stands up
sits down.
.......
.......
stands up
sits down.
stands up
문제는 sit.sitdown() 대신 sitdown()을 호출하는 것입니다. funtion은 "this"가 무엇인지에 대한 정보를 잃어 버리며 더 이상 이름을 검색 할 수 없습니다. Tiger.standup()을 호출하기 때문에 첫 번째 호출에서 작동합니다. 이 함수는 Tiger에서 이것을 호출한다는 것을 알고 있습니다. –
왜'standup.call (this);'을하지만'sitdown(); 만합니까? – Bergi
사과 그것은 단지 실수 였어. 나는 객체에 접근하는 다른 접근법을 시도하고 있었다. – Wracker