我正在尝试构建一些对象,以使我的生活更轻松,但不知怎的,我无法让它工作。我得到了以下代码:
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。
任何帮助将不胜感激!
答案 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();