2010-04-15 4 views
1

var Dog = 기능 (이름) { this.name = 이름; this.sayName(); }생성자에서 객체의 메서드를 호출하는 방법은 무엇입니까?

Dog.prototype.sayName = function() { 
    alert(this.name); 
} 

내가 개 개체 Dog('Bowwow')의 새로운 인스턴스를 만드는거야,하지만 방법 sayName()가 정의되어 있지 않습니다. 왜?

아니면 내가

var Dog = function(name) { 

    this.name = name; 

    this.sayName(); 

    this.prototype.sayName = function() { 
    alert(this.name); 
    } 
} 

감사합니다 ... (하지만 난 차이를 볼 수 없습니다) 같은 것을해야한다.

+0

첫 번째 코드 샘플은 훌륭하게 작동합니다. 어떤 문제가 발생하고 있습니까? 여기에서 작동하는 것을 볼 수 있습니다 : http://jsbin.com/uxvi3 –

+0

@Philippe Leybaert, eBusiness 대답을보십시오. 나는 새로운 것을 사용하는 것을 잊어 버렸다. – Kirzilla

답변

5

JavaScript는이 영역에서 다소 위험하므로 코드는 new 생성자를 사용하여 Dog을 호출하는 한 작동합니다.

new Dog("Hello world") 

새로운 생성자를 사용하면 원하는대로 동작합니다. this 그렇지 않으면 완전히 다릅니다.

관련 문제