您好我在使用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文件内容(上面的对象),它完美无缺。但它不能用作外部文件。
答案 0 :(得分:2)
您需要使用this[prop]
而不是this.prop
;前者查找名称为prop
中字符串的属性,而后者查找名称字面上为“prop”的属性。
(我无法让它重现你的输出。如上所述,它只是警告“错误”,并且上面的更改导致它提供所需的输出。)