纯Javascript原型

时间:2012-12-17 15:04:46

标签: javascript oop

我希望以下代码的输出为:

one
two
three

以下是代码:http://jsfiddle.net/5banB/15/

为什么功能代码也在输出中,我该如何解决呢?

请不要回答:只循环3次:)

来自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);

输出

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

更新

那么我如何编写扩展,比如我的DOM中的每个节点?什么是首选方式?

2 个答案:

答案 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/>";
}