我有一些构造对象的代码:
function gridObjConst(id, itemName, itemPrice, itemListPrice, width, height, imgName) {
this.id = id;
this.itemName = itemName;
this.itemPrice = itemPrice;
this.itemListPrice = itemListPrice;
this.width = width;
this.height = height;
this.imgName = imgName;
return this;
}
我使用w3schools页面作为指南:http://www.w3schools.com/js/js_objects.asp
这一切都很好。然后我在代码的顶部添加了“use strict”,这个函数破了。 Firebug报道:这是未定义的 - this.id = id
我该如何解决这个问题?
答案 0 :(得分:3)
这意味着您在没有new
运算符的情况下调用构造函数。你需要这样做:
var myGridObjConst = new gridObjConst();
当您在没有new
运算符的情况下调用函数时,this
引用窗口,但在严格模式下引用does not,因此您的错误。
另请注意,您不需要构造函数中的return this;
。 this
将自动退回。
如@JoachimSauer所述,在学习JavaScript时,您应该考虑使用MDN而不是W3Schools。在您链接到的页面上没有提到原型的事实是绝对荒谬的。