Javascript Anonymous Constructor:它既是实例又是函数?它也泄漏了吗?

时间:2016-01-28 16:35:11

标签: javascript memory-leaks constructor q anonymous

我已经开始使用匿名构造函数的实例作为原型链的底部。这允许我做一些奇怪的构造函数,比如创建闭包:

var car = new function() {
    var wheels = 4;

    this.getWheels = function() {
        return wheels;
    }
};

现在,如果我打电话:

console.log(car);

按预期记录对象:Object { getWheels: car</this.getWheels() }。另外,如果我打电话:

var toyota = new car();

,我按预期收到TypeError: car is not a constructor。但是,如果我打电话:

var toyota = new car.Constructor();

,我从前面收到了匿名函数的新实例。如果我打电话的事实:

console.log(car.constructor);
控制台中记录了

function car<()

首先,为什么名为car的构造函数,即使它创建的唯一对象也称为car?其次,这可以被认为是一个内存泄漏,因为匿名函数在被调用后被保存了吗?我很难理解这一点。谢谢。

编辑:我刚刚发现这种模式确实被认为是浪费内存。如果有人想知道,更合适的模式是模块模式:

var car = function() {
    var wheels = 4;
    return {
        getWheels: function() {return wheels},
    }
}();

0 个答案:

没有答案