是否带有new的Javascript
Javascript with new or not
我有以下函数
var myInstance = (function() {
var privateVar = 'Test';
function privateMethod () {
// ...
}
return { // public interface
publicMethod1: function () {
// all private members are accesible here
alert(privateVar);
},
publicMethod2: function () {
}
};
})();
如果我在函数中添加一个新的,有什么区别。从萤火虫看来,似乎两个物体是一样的。据我所知,两者都应该强制执行singleton模式。
var myInstance = new (function() {
var privateVar = 'Test';
function privateMethod () {
// ...
}
return { // public interface
publicMethod1: function () {
// all private members are accesible here
alert(privateVar);
},
publicMethod2: function () {
}
};
})();
虽然最终结果看起来完全相同,但它是如何到达那里的以及在什么中执行是不同的。
第一个版本执行匿名函数,其中this
位于window
对象的上下文中。第二个版本执行匿名函数,但this
在一个新的空对象的上下文中。
最后,它们都返回了另一个对象(您的Singleton)。这只是执行上下文中的一个细微差异。
要对此进行测试,请在声明privateVar
变量之前添加一个alert(this);
。
@Tom Squires:这不一定是真的,不声明变量是一种糟糕的做法。带有"use strict";
指令的脚本确实会导致JS引擎抱怨(假设引擎支持"use strict"
;
相关文章:
- JavaScript“new Date()”使用哪个时区
- Javascript new Date() 返回错误的日期
- javascript new Date() issue
- 将 JavaScript new 关键字与可变长度参数数组一起使用
- Javascript new Date() 返回不同的日期
- JavaScript new Date().toLocaleString() length
- JavaScript 'new' 关键字,带或不带 '()'
- 将 Javascript new Date 转换为 Java joda DateTime 格式
- 如何通过 Python 将 Javascript new Date() 插入 MongoDB
- Javascript new Date将日期减少一天
- javascript new Date() set to GMT -4
- javascript new不会创建新对象
- Javascript new返回错误年份的日期
- Javascript new Date(字符串)返回一天后
- Javascript: new Function() and eval()
- 函数中的Javascript“new”关键字
- Modal javascript:new Window在提交表单时打开
- javascript:new Date(“31.12.2015”)返回无效日期
- Javascript:“new Date(dateString)”与“new Date”(年、月、日)之间的差异
- 在执行getTime()时,Javascript new Date()给了我相同的结果