0

我正在尝试在 JavaScript 中创建一个对象,并且我正在关注Mozilla 的教程。本教程工作得很好,但是当我将该技术应用于我的代码时它不起作用。(我做错了什么,但我没有看到)。我编写了所有方法并且没有收到任何错误,我初始化了我的对象,也没有收到任何错误,我什至调用我的方法并且我没有收到错误,但返回值是一个字符串代码而不是我期望的值

function JavaScriptObj(id, datatype) {
    function initialize(id, datatype) {
        if (typeof id === 'number' && id > 1) {
            this.theID = id;
        } else {
            console.error("ERROR: JavaScriptObj.initialize" + id + "is NOT a valid argument");
        }

        if (typeof datatype === 'string') {
            this.data_type = datatype;
        } else {
            console.error("ERROR: JavaScriptObj.initialize" + datatype + "is NOT a valid argument");
        }
    }
}

JavaScriptObj.prototype.getSectionName = function(){
    var SectionName = "section-" + this.theID;
    return SectionName;
};
var person2 = new JavaScriptObj(2, "texteditor");
alert(person2.getSectionName);

这是我的jsfiddle

提前致谢!:-)

4

2 回答 2

2

删除initialize嵌套函数:

function JavaScriptObj(id, datatype) {
    if (typeof id === 'number' && id > 1) {
        this.theID = id;
    } else {
        console.error("ERROR: JavaScriptObj: " + id + "is NOT a valid argument");
    }

    if (typeof datatype === 'string') {
        this.data_type = datatype;
    } else {
        console.error("ERROR: JavaScriptObj: " + datatype + "is NOT a valid argument");
    }
}

JavaScriptObj.prototype.getSectionName = function(){
    var SectionName = "section-" + this.theID;
    return SectionName;
};

var person2 = new JavaScriptObj(2, "texteditor");
alert(person2.getSectionName()); // need to call it too
于 2013-10-26T23:00:21.513 回答
1

看起来您实际上并没有执行/调用您的方法。为了调用您的方法,您需要在调用后附加括号:

alert(person2.getSectionName());

撇开小事不谈——使用console.log()而不是alert()往往会为您节省一些击键次数,并使开发速度更快一些。此外,alert()它是一个阻止页面上所有其他代码执行的阻塞调用。虽然这在您刚开始时不会有什么不同,但随着您的 javascript 忍者技能的提高,这可能会成为未来的痛点。:)

于 2013-10-26T22:58:19.457 回答