我找到了以下jquery代码模式。我认为选择以更好的方式构建代码。我想知道因为对象声明没有' var'或者其他的东西。代码是对的吗?
JS
MyObject = (function() {
return function() {
alert("object created");
};
})();
$(function() {
new MyObject();
});
答案 0 :(得分:2)
根据你的评论,听起来这就是你拥有的实际代码,而不是它的复述版本,所以这只是一些虚假的代码。
var
,它将被视为一个全局变量,但这被认为是一种不好的做法,并且在严格模式下是禁止的。MyObject
未定义。因此,当new MyObject();
最终运行时,它只会抛出错误并停止执行就绪处理程序。看起来编写该代码的人可能一直试图这样做,但是他试图变得聪明:
var MyObject = function() {
alert("Object created");
};
$(function() {
new MyObject();
});
此处,MyObject
是一个显示警报的功能。 jQuery ready处理程序将该函数作为构造函数调用,这会导致函数内部的代码运行(显示警报),并创建新对象。但是,此对象不会在任何地方使用或分配,因此只会在一段时间后收集垃圾。
答案 1 :(得分:0)
使用不带var关键字的变量设置为全局范围。因此,MyObject
相当于window.MyObject
,您可以在脚本的其他位置使用它。