1

以下代码有效,但我是否有导致循环引用或内存泄漏的风险?

/* core package */
var core = function() {
    // Throw an error, the core package cannot be instantiated.
    throw new Error('A package cannot be instantiated.');
};

core.Container = function (properties){
    this.constructor = this;
    this.id = null;
    if ('id' in properties)
        this.id = properties['id'];
    else 
        throw new Error('A container must have an id.');
}
core.Container.prototype = new Object();

var container = new core.Container({'id': 'container'});
alert(container instanceof core.Container); // Result is true
4

2 回答 2

0

当你分配

core.Container.prototype = new Object();

新的 core.Container实例被分配 Object 作为它们的构造函数-

this只指构造函数本身,其构造函数应该是Function。

分配core.Container.prototype.constructor=core.Container

于 2011-08-17T13:33:24.440 回答
0

正如@Raynos 在聊天中发布的那样

@Utilitron 取决于您所说的泄漏是什么意思,我们是在谈论体面的引擎中的泄漏还是 IE6 中的泄漏该代码不应该在 v8 中泄漏

于 2011-08-19T15:46:01.807 回答