Javascript不执行Object方法

时间:2010-07-13 08:59:54

标签: javascript

我正在尝试构建一些对象,以使我的生活更轻松,但不知怎的,我无法让它工作。我得到了以下代码:

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;

当我尝试执行此代码时,没有任何反应。我希望执行 generateParagraph 方法中的console.debug和alert。

任何帮助将不胜感激!

4 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

更改

Paragraph.generateParagraph = function() {   

Paragraph.prototype.generateParagraph = function() {   

您将该函数添加为构造函数的属性,而不是原型。通过将函数添加到原型中,它将成为使用new关键字调用构造函数时创建的对象的一部分。

此外,您需要使用括号来调用generateParagraph,否则您将获得对该函数的引用,而不是调用该函数:

paragraph.generateParagraph();

答案 2 :(得分:1)

您没有执行generateParagraph函数,因为缺少括号...

paragraph.generateParagraph

这使得函数成为回调...
称之为:

paragraph.generateParagraph();

答案 3 :(得分:1)

你没有调用这个函数。

paragraph.generateParagraph();