2010-07-13 10 views
1

내 인생을 좀 더 쉽게 만들기 위해 일부 객체를 만들려고하고 있지만 어떻게 든 작동시키지 못합니다. 다음 코드가 있습니다.자바 스크립트가 실행되지 않습니다. 객체 메소드

function Paragraph(className, innerHTML, parentId) { 
    this.className = className; 
    this.innerHTML = innerHTML; 
    this.parentId = parentId; 
} 

Paragraph.generateParagraph = function() { 
    console.debug(this.parentId); // Expect 'testDiv' 
    alert(this.parentId); // Expect 'testDiv' 
}; 

function initialize() { 
    var paragraph = new Paragraph('testClass', 'testTitle', 'testDiv'); 
    paragraph.generateParagraph; 
} 

window.onload = initialize; 

이 코드를 실행하려고하면 아무 일도 일어나지 않습니다. 나는 console.debug를 예상하고 generateParagraph 메소드가 실행되도록 경고합니다.

도움이 될 것입니다. 이 콜백으로 기능을 얻을 수

paragraph.generateParagraph 

답변

3

생성자 자체가 아닌 생성자의 프로토 타입에 메서드를 추가합니다.

function Paragraph(className, innerHTML, parentId) { 
    this.className = className; 
    this.innerHTML = innerHTML; 
    this.parentId = parentId; 
} 

Paragraph.prototype.generateParagraph = function() { 
    console.debug(this.parentId); // Expect 'testDiv' 
    alert(this.parentId); // Expect 'testDiv' 
}; 

function initialize() { 
    var paragraph = new Paragraph('testClass', 'testTitle', 'testDiv'); 
    paragraph.generateParagraph(); 
} 

window.onload = initialize; 
+0

-1, 질문에 게시 된 코드와 다른 점을 확인할 수 없습니다. 어쨌든 정답이 아닙니다. –

+0

@Andy E, 실제로이 대답은 완전히 정확합니다. – James

+0

당신은 완전합니다! 답변 해주셔서 감사합니다! –

1

당신은 괄호로 누락의 generateParagraph 기능을 실행하지 않습니다 ...
그것을 호출하려면 :

paragraph.generateParagraph(); 
+1

여전히 실 거예요 작업 방법의 ctor 프로토 타입에 추가 할 필요가 없습니다 :

또한, 당신은 그렇지 않으면 당신은 오히려 함수를 호출하는 것보다, 기능에 대한 참조를 가져, generateParagraph에 대한 호출에 괄호가 필요합니다 ctor. –

1

당신을 이 함수를 호출하지 않습니다.

paragraph.generateParagraph(); 
2

변화

Paragraph.generateParagraph = function() { 

Paragraph.prototype.generateParagraph = function() { 

에 당신은 오히려 프로토 타입보다 생성자 함수의 속성으로 기능을 추가했다. 프로토 타입에 함수를 추가하면 new 키워드를 사용하여 생성자 함수를 호출 할 때 만들어진 객체의 일부가됩니다. ,

paragraph.generateParagraph(); 
관련 문제