javascript:严格模式和对象

标签 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

我该如何解决这个问题?

最佳答案

这意味着您正在调用构造函数而不使用 new 运算符。您需要这样做:

var myGridObjConst = new gridObjConst();

当您调用不带 new 运算符的函数时,this 指的是 Window,但在严格模式下它 does not ,因此你的错误。

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

<小时/>

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

关于javascript:严格模式和对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11118845/

相关文章:

javascript - 设置样式位置 : absolute 时,Chrome 对象标签加载多次

javascript - 捆绑脚本中的 $(document).ready()

javascript - 为什么 alert($ ("#myHTMLElement")) 显示其原始属性,即使我已经通过事件对其进行了变异?

javascript - ReactJS:使用连接值连接 map 输出

Javascript 对象 - 以数字开头的键,允许吗?

javascript - 下拉 JQuery 在没有主页的情况下无法工作

javascript - 使用默认参数调用也有回调的函数

Java 骰子游戏生成新数字时遇到问题

javascript - 在 Mootools 中将对象转换为哈希对象?

javascript - 基于单独的对象将数组映射到具有深度的对象