我无法理解这个操作:
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);
答案 0 :(得分:1)
2个概念:
obj[key]
; 在您的代码中,for (var i in prop)
循环对象prop
中的所有键,并将每个键存储在i
中。因此,对于每个键i
,您可以通过prop[i]
获取其值。
答案 1 :(得分: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"
}
此行为已解释为in the spec,如果您在上面的示例中假设P
为i
,则会对此行进行总结:
让 P 为 obj 的下一个属性的名称,其[[Enumerable]]属性为true。