gpt4 book ai didi

JavaScript:防止 Array.push()

转载 作者:行者123 更新时间:2023-11-29 18:04:21 25 4
gpt4 key购买 nike

我有一个带有数组成员的密封对象,我想在其上防止直接推送。

var myModule = (function () {
"use strict";
var a = (function () {
var _b = {},
_c = _c = "",
_d = [];
Object.defineProperty(_b, "c", {
get: function () { return _c; }
});
Object.defineProperty(_b, "d", {
get { return _d; }
});
_b.addD = function (newD) {
_d.push(newD);
};
Object.seal(_b);
return _b;
}());
var _something = { B: _b };
return {
Something: _something,
AddD: _b.addD
};
}());

myModule.Something.c = "blah"; // doesn't update = WIN!!
myModule.AddD({}); // pushed = WIN!
myModule.Something.d.push({}); // pushed = sadness

如何阻止推送?

更新:

感谢所有的想法。我最终需要将 JSON 发送到服务器。看起来我可能需要为数组使用一个对象,然后想出一种方法来生成和返回所需的 JSON,或者更改 _something 以使用 .slice()。会上场和报道。

最佳答案

你可以覆盖 push 方法:

var _d = [];
_d.__proto__.push = function() { return this.length; }

当你需要在你的模块中使用它时,调用Array.prototype.push:

_b.addD = function (newD) {
Array.prototype.push.call(_d, newD);
};

关于JavaScript:防止 Array.push(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32466292/

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