jQuery - 对象声明

时间:2015-01-18 13:09:08

标签: javascript jquery

我找到了以下jquery代码模式。我认为选择以更好的方式构建代码。我想知道因为对象声明没有' var'或者其他的东西。代码是对的吗?

JS

MyObject = (function() {


 return function() {
    alert("object created");
 };
})();

$(function() {
    new MyObject();
});

2 个答案:

答案 0 :(得分:2)

根据你的评论,听起来这就是你拥有的实际代码,而不是它的复述版本,所以这只是一些虚假的代码。

  1. 你可以创建一个变量并为其赋值而不使用var,它将被视为一个全局变量,但这被认为是一种不好的做法,并且在严格模式下是禁止的。
  2. 第一个语句是IIFE,但它不返回任何内容,因此MyObject未定义。因此,当new MyObject();最终运行时,它只会抛出错误并停止执行就绪处理程序。
  3. 看起来编写该代码的人可能一直试图这样做,但是他试图变得聪明:

    var MyObject = function() {
        alert("Object created");
    };
    
    $(function() {
        new MyObject();
    });
    

    此处,MyObject是一个显示警报的功能。 jQuery ready处理程序将该函数作为构造函数调用,这会导致函数内部的代码运行(显示警报),并创建新对象。但是,此对象不会在任何地方使用或分配,因此只会在一段时间后收集垃圾。

答案 1 :(得分:0)

使用不带var关键字的变量设置为全局范围。因此,MyObject相当于window.MyObject,您可以在脚本的其他位置使用它。