0

I would expect the output of the following code to be:

one
two
three

Here's the code: http://jsfiddle.net/5banB/15/

Why is the function code also in the output and how do I solve it?

And please don't answer: loop only 3 times :)

Code from jsfiddle:

Object.prototype.example = function(args) {
    var elmnt = this;

    for(var a in args)
    {
        elmnt.innerHTML += args[a] + "<br/>";
    }
}

var numbers = ['one', 'two', 'three'];

document.getElementById("mydiv").example(numbers);

​</p>

Output

one
two
three
function (args) { var elmnt = this; for(var a in args) { elmnt.innerHTML += args[a] + "
"; } }

Update:

So how would I go about writing an extension of, say every node in my DOM? What's the preferred way?

4

2 回答 2

0

for in循环遍历对象的所有可枚举属性。

您已example为每个对象添加了一个属性。

Object 构造函数位于 Array 构造函数的原型链上,因此每个数组都有一个example属性。

一般来说,如果你使用for in循环,你会想用它hasOwnProperty来测试属性是否直接在对象上,而不是通过原型链继承。

于 2012-12-17T15:07:48.643 回答
0

了解原型可能是一个很好的起点。您可能可以在 google 上找到大量优秀的文章。

http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/

许多这样的文章也可能讨论向对象原型和 for 循环添加函数/属性的纯恶。

如果您认为原型仍然是您想要的,请尝试在您的数组上使用基于索引的循环

for(var i=0;i<arguments[0].length;i++){
    elmnt.innerHTML += args[a] + "<br/>";
}
于 2012-12-17T15:15:20.887 回答