0

您好,我在弄乱 Javascript 中的一个对象。这是我在单独的 .js 文件中的对象。

json-webservice.js

      //create object
function objdata(tool, product, details) {


    //create object properties
    this.tool = tool;
    this.product = product;
    this.details = details;


    //create object methods
    this.validate = function () {
        var error = 0;
        for (var prop in this) {

            if (this.hasOwnProperty(prop)) {
                if (prop != 'validate' || prop != 'submit') {
                    if (this[prop] == null || this[prop] == undefined || this[prop] == "") {
                        error += 1;
                    }
                }

            }
        }

        return error;
    }

    this.submit = function () {

        var error = this.validate();

        if (error > 0) {
            alert("errors: " + error);
        }
        else {
            alert(this.tool + " " + this.product + " " + this.details);
        }
    }

}


}

我将此脚本包含在我的页面顶部index-main.html

然后文件准备好,然后初始化新对象并提交。

$(document).ready(function () {

    var userdata = new objdata('5', 'Main Page', '9');
    userdata.submit();

});

我的问题是为什么它只会提醒

---------------------------
Windows Internet Explorer
---------------------------
5
---------------------------
OK   
---------------------------

并不是

---------------------------
Windows Internet Explorer
---------------------------
5 Main Page 9
---------------------------
OK   
---------------------------

就像我认为应该的那样。我的对象是否正确编码?我没有在 IE 中报告任何 javascript 错误。

奇怪的部分是我可以复制 json-webservice.js 文件内容(上面的对象)并且它工作得很好。但它不能作为外部文件工作。

4

1 回答 1

2

您需要使用this[prop]而不是this.prop; 前者查找名称为 in 字符串的属性prop,而后者查找名称字面上为“prop”的属性。

(我无法让它重现您的输出。正如所写,它只是警告“错误”,上面的更改导致它提供所需的输出。)

于 2013-01-31T21:16:07.393 回答