gpt4 book ai didi

javascript - 对象覆盖不起作用

转载 作者:行者123 更新时间:2023-11-28 01:11:32 25 4
gpt4 key购买 nike

我的 JavaScript 对象是:

var MyObject = {
DOM: function(tagName){
if(!this.isElement){
var found = document.getElementsByTagName(tagName);
this.isElement = true;
for(i in found)
this[i] = found[i];
} else{
var found = this[0].getElementsByTagName(tagName);
for(i in found)
this[i] = found[i];
}
return this;
}
}

它工作得很好:

MyObject.DOM("div");

问题是当我再次记录该对象时:

MyObject.DOM("div");
console.log(MyObject);

问题是它记录了:

> Object {0: div#lower.cl, 1: div.higher, find: function, isElement: true}

但实际上我希望它记录:

> Object {find: function}

因此,当我再次运行 MyObject 时,我不希望它保留找到的元素。

所以我真的只想在每次使用该对象时重新加载它。

最佳答案

这是实现此目的的一种方法。最好坚持尽可能保持对象不可变。您尝试使用一个对象的一个​​实例来完成所有操作,但这是行不通的:

function MyObject() {
this.length = 0;
}

MyObject.prototype.DOM = function (tagName) {
var found = new MyObject(),
batch,
toSearch,
i,
j,
z = 0;

if (this === MyObject) {
toSearch = [document];
} else {
toSearch = Array.prototype.slice.call(this);
}

for (i = 0; i < toSearch.length; i += 1) {
batch = toSearch[i].getElementsByTagName(tagName);
for (j = 0; j < batch.length; j += 1) {
found[found.length] = batch[j];
found.length += 1;
}
}

return found;
}

MyObject.DOM = MyObject.prototype.DOM;

http://jsfiddle.net/Sygdm/

关于javascript - 对象覆盖不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24371137/

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