当我稍后尝试附加使用以下代码创建的对象时,出现“未找到节点”(DOM 异常 8)错误:
object.addimgs = function(a){
for (var i = 0; i < a.length; i++){
a[i][0] = create("img", {position: "absolute"}, {src: a[i][1]});
}
}
我为 a
插入的数组是这样的:
[[this.logo, "img/coffee.png"], [this.door, "img/door.png"]]
所以本质上我尝试使用 for 循环来声明对象,因为它比我之前的工作效率更高:
this.logo = create("img", {position: "absolute"}, {src: "img/coffee.png"});
this.door = create("img", {position: "absolute"}, {src: "img/door.png"});
...等
(create(a, b, c){
是一个自定义函数,我知道上面的代码可以工作)
有什么想法为什么这行不通吗?当对象作为参数输入时,它们是否不再是对象?
最佳答案
我明白你在尝试什么,但是分配给a[i][0]
将分配给数组槽,而不是数组槽包含的内容。
此外,当您像这样创建数组时:
[[this.logo, "img/coffee.png"], [this.door, "img/door.png"]]
数组元素 [0][0]
不是对 this.logo
成员的引用,因为它看起来像您所期望的那样。数组元素 [0][0]
将包含创建数组时 this.logo
的值,该值很可能是 undefined
.
尝试这样的事情:
object.addimgs = function(a){
for (var i = 0; i < a.length; i++){
a[i][0][a[i][1]] = create("img", {position: "absolute"}, {src: a[i][2]});
}
}
然后用这个数组调用它:
[[this, "logo", "img/coffee.png"], [this, "door", "img/door.png"]]
关于javascript - 将对象声明为参数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7048462/