javascript - 将对象声明为参数不起作用?

标签 javascript object

当我稍后尝试附加使用以下代码创建的对象时,出现“未找到节点”(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/

相关文章:

JavaScript element.classList.remove 不起作用

javascript - 反转对象值和 boolean 值 - 2 个 JavaScript 代码

c# - 根据条件和发生将集合拆分为对象

java - 在java中有两种创建对象的方法吗?

javascript - 在 Javascript 中读取 Firefox 的 media.navigator.enabled 的值

javascript 非顺序随机数生成器

JavaScript 精简

iphone - 将完整的类对象存储到 iPhone 中的数据库中

javascript - 函数,返回最后一个值等于某个值的对象。 (JavaScript)

javascript - 正则表达式匹配段落中的单词但排除内部 HTML 标签