如果不将新对象分配给变量会发生什么?例如:
function MyConstructor() {
// Codes here
};
new MyConstructor(); // new object instance is not assign to a variable
Run Code Online (Sandbox Code Playgroud)
这段代码有危险吗?它是否破坏了全局命名空间?是否可以访问使用此样式创建的对象?
谢谢.
jAn*_*ndy 11
正如您所说的那样,调用new MyConstructor()将返回一个新对象,对它的引用将不会被存储,因此很快就会被垃圾收集器删除.你唯一的机会就是对这个新对象采取行动
new MyConstructor().someMethod();
Run Code Online (Sandbox Code Playgroud)
...之后,你失去了机会,新的对象引用在外太空中丢失了:)
除非构造函数本身在对象外部的某个地方保存了对该对象的引用,否则不再有对该对象的引用,垃圾收集器将删除它。
该代码并不危险,它不会向全局命名空间添加任何内容,并且除非构造函数使之成为可能,否则不可能到达该对象。
可以使用它的一个例子是构造函数注册对象本身:
var myHandlers = {};
function Handler(name) {
myHandlers[name] = this;
}
new Handler("test");
Run Code Online (Sandbox Code Playgroud)
使用类似的东西的缺点当然是更难跟踪正在发生的事情。
| 归档时间: |
|
| 查看次数: |
1541 次 |
| 最近记录: |