javascript:严格的模式和对象

时间:2012-06-20 11:47:22

标签: javascript object

我有一些构造对象的代码:

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

这意味着您在没有new运算符的情况下调用构造函数。你需要这样做:

var myGridObjConst = new gridObjConst();

当您在没有new运算符的情况下调用函数时,this引用窗口,但在严格模式下引用does not,因此您的错误。

另请注意,您不需要构造函数中的return this;this将自动退回。


如@JoachimSauer所述,在学习JavaScript时,您应该考虑使用MDN而不是W3Schools。在您链接到的页面上没有提到原型的事实是绝对荒谬的。