javascript对象仅警告第一个选项

时间:2013-01-31 21:07:22

标签: javascript oop object

您好我在使用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文件内容(上面的对象),它完美无缺。但它不能用作外部文件。

1 个答案:

答案 0 :(得分:2)

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

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