0

我在理解此操作时遇到问题:

tmp.setAttribute(i, prop[i]);

在这个for循环中经过。prop-array 如何创建 2 个参数。据我了解var = i只是一个变量,对吗?但显然它就像那样成为方法中的 1:st 参数?

谢谢你的时间。

http://jsbin.com/ozoqob/2/edit

var MYAPP = MYAPP || {}; 

MYAPP.dom = {};
   MYAPP.dom.Element = function(type, prop){
     var tmp = document.createElement(type);
     for (var i in prop) {
       tmp.setAttribute(i, prop[i]);
       /*
       WHAT I DONT UNDERSTAND IS HOW THIS FOR-LOOP DIVIDE THE ARRAY IN TWO ARGUMENTS?? BEACAUSE 'I' IS JUST A VARIABLE WHICH IS USED TO LOOP THRU THE ARRAY BUT APPARENTLY NOT RIGHT?
       */
       console.log(i); // how? is this arguments divided?
       console.log(prop[i]);
     }
  return tmp; 
   };

var el1 = new MYAPP.dom.Element(
       'a',
       {href:'http://phpied.com'}
   );

console.log(el1);
4

2 回答 2

1

2个概念:

  1. JavaScript 中的每个对象都是一个哈希表,因此您可以通过键访问其属性值,例如obj[key]
  2. JavaScript 中的 for-in 循环循环目标对象中的键(而不是循环值)

在您的代码中,for (var i in prop)循环对象中的所有键prop并将每个键存储在i. 因此,对于每个键i,您可以通过 获取其值prop[i]

于 2013-03-20T11:09:13.893 回答
0

您将对象作为第二个参数传递给该方法。for...in然后,您使用循环枚举该对象的属性。在循环的每次迭代中,i将引用对象属性的标识符,prop[i]因此将引用该属性的值:

var prop = {
    prop1: "value1",
    prop2: "value2"
};

for (var i in prop) {
    console.log(i); // "prop1", "prop2"
    console.log(prop[i]); // "value1", "value2"
}

此行为在 spec 中进行了P解释,如果您想象在i上面的示例中,则由这一行总结:

Pobj的 [[Enumerable]] 属性为 true 的下一个属性的名称。

于 2013-03-20T10:54:10.457 回答