0

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

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

我该如何解决?

4

1 回答 1

3

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

var myGridObjConst = new gridObjConst();

当您在没有new运算符的情况下调用该函数时,this指的是 Window,但在严格模式下它不是,因此您的错误。

另请注意,您不需要return this;使用构造函数。this会自动退回。


正如@JoachimSauer 所指出的,在学习 JavaScript 时,您应该考虑使用 MDN 而不是 W3Schools。在您链接到的页面上的任何地方都没有提到原型,这一事实绝对是荒谬的。

于 2012-06-20T11:52:11.250 回答