gpt4 book ai didi

javascript - 闭包编译器忽略对象突变

转载 作者:行者123 更新时间:2023-12-03 11:55:27 26 4
gpt4 key购买 nike

我将以下代码放入高级模式的闭包编译器中:

var obj = (function() {
/** @constructor */
function H(a) {
this.a = a
}
var h = new H(1);
h.b=1
return h
})();

我返回的结果是:

(function() {
var a = new function() {
}(1);
a.a = 1;
return a;
})();

为什么它忽略我对对象 h.b=1 所做的更改?

最佳答案

高级编译选项启用 aggressive property removal ,其中包括一些假设:

It makes a strong assumption that properties defined on a "prototype" or "this" will not be iterated over and thus is a candidate for removal.

/** @constructor */
function cls() {
this.x = 1; // removal candidate due to "this" assumption;
}

所以您看到的实际上是 this.a = a 被删除,然后属性 b 被重命名为 a .

关于javascript - 闭包编译器忽略对象突变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25629069/

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