gpt4 book ai didi

javascript - javascript中的自删除方法实例

转载 作者:行者123 更新时间:2023-11-30 13:03:22 25 4
gpt4 key购买 nike

我试图创建一个可以在实例化时删除自身的方法。在几次失败的尝试之后,我最终写下了这个邪恶的 rem()

var g = function () {
this.rem = function () {
var _instance = this;
setTimeout(function () {
console.log('_instance before:', _instance, 'scope:', this);
delete _instance;
console.log('_instance after:', _instance);
}, 10);
return this;
};
return this;
}

我知道它看起来很丑。但这对我来说也不起作用,这有点奇怪。在匿名函数内部,范围是 window 并且 _instance 变量似乎也指向所需的实例。

var t = new g();

t.rem();

输出:

_instance before: g {asdf: 3, rem: function}, scope: Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}

_instance after: g {asdf: 3, rem: function}

它不工作的原因是什么?

谢谢。

最佳答案

不幸的是,您的方法行不通。当您删除 _instance 时,您删除的是对对象的引用,而不是对象本身。还有另一个对同一对象 (t) 的引用,因此该对象不会被浏览器垃圾回收。而不是 t.rem(); 你应该只使用 t = null; 浏览器将在适当的时候摆脱对象(假设没有其他引用它)。

关于javascript - javascript中的自删除方法实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16587024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com