在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 關(guān)于js中new一個對象內(nèi)存釋放的問題

關(guān)于js中new一個對象內(nèi)存釋放的問題

使用jQ給一個元素綁定一個事件,事件調(diào)用的匿名函數(shù)在執(zhí)行完后會釋放函數(shù)中的變量嗎?

var test = function(args) {
    this._args = args;
    return this;
}

test.prototype.getArgs = function() {
    console.log(this._args);
}

$('#btn').on('click', function() {
    new test('This is Args').getArgs();
}

我就是想問下,當我點擊id為btn的按鈕執(zhí)行函數(shù)后,函數(shù)中new的這個test對象實例會被釋放嗎?每新一個對象不都是創(chuàng)建新的內(nèi)存嗎?它還需要手動釋放嗎?
最主要的是我每次單擊按鈕都會new一次對象,我如果多次單擊如不釋放是不是會占用很多內(nèi)存?

回答
編輯回答
柒喵

@kikong 非常感謝,那我再問下,象這樣是不是就得手動釋放:

var test = function(element) {
    this._element = element;
    return this;
}

test.prototype.getArgs = function() {
    $(this._element).css('background', red);
    return this;
}

$('#btn').on('click', function() {
    var elm = new test(this).getArgs();
    elm = null; //這里是不是得手動設(shè)置一下來釋放
}
2017年12月9日 07:22
編輯回答
玩控

只要創(chuàng)建的對象從window對象出發(fā),可以被觸達,就認為是被使用的,有用的的,JS引擎的GC回收機制就不會回收.
當回調(diào)函數(shù)被執(zhí)行返回后。新創(chuàng)建的對應(yīng)因為被有被引用,就將會被GC回收掉,而如果這個新對象引用的#btn對象,那么它就不會被釋放,除非#btn被釋放

2018年7月7日 03:45