我希望以下代码的输出为:
one
two
three
以下是代码:http://jsfiddle.net/5banB/15/
为什么功能代码也在输出中,我该如何解决呢?
请不要回答:只循环3次:)
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);
one
two
three
function (args) { var elmnt = this; for(var a in args) { elmnt.innerHTML += args[a] + "
"; } }
那么我如何编写扩展,比如我的DOM中的每个节点?什么是首选方式?
答案 0 :(得分:0)
for in
循环遍历对象上的所有可枚举属性。
您已为每个对象添加了example
属性。
Object构造函数位于Array构造函数的原型链上,因此每个数组都将具有example
属性。
一般来说,如果您使用for in
循环,则需要使用hasOwnProperty
来测试该属性是否直接在对象上,而不是通过原型链继承。
答案 1 :(得分:0)
了解原型可能是一个很好的起点。您可以在谷歌上找到大量精美的文章。
http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/
许多此类文章也可能讨论向Objects原型和for循环添加函数/属性的纯粹邪恶。
如果您认为原型是您仍然想要的,请尝试在阵列上使用基于索引的循环
for(var i=0;i<arguments[0].length;i++){
elmnt.innerHTML += args[a] + "<br/>";
}