JavaScript:严格模式和对象

javascript: strict mode and objects

本文关键字:对象 模式 JavaScript      更新时间:2023-09-26

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

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

我该如何解决这个问题?

这意味着

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

var myGridObjConst = new gridObjConst();

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

另请注意,不需要从构造函数return this;this将自动返回。


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