Javascript函数参考最佳实践

Javascript函数参考最佳实践,javascript,prototype,javascript-objects,Javascript,Prototype,Javascript Objects,我经常使用这个结构(我自己创建的),不使用对象,这样做非常简单和好: function name( elements ){ init( elements ); var ret = { add : function( more ){ $.extend(elements, more); init( more ); } } function init( el ){ $.

我经常使用这个结构(我自己创建的),不使用对象,这样做非常简单和好:

function name( elements ){

    init( elements );

    var ret = {
        add : function( more ){
            $.extend(elements, more);
            init( more );
        }
    }

    function init( el ){
        $.each(el,function(name, selector){
            //some stuff....
        });
    }

    return ret;
}

这是一个好做法还是不好?使用对象和距离是否更好?为什么?

在我看来,构造函数和原型(JavaScript相当于传统类)会导致代码更具可读性和可维护性。我必须读你的例子三遍才能弄清楚它在做什么(基本上,用“add”方法创建字典结构)

原型更像javascript-y,并且使用了一种常见且众所周知的范式——对于其他人或两年后的您来说,回顾和理解它要简单得多

考虑一下以下内容的易读程度:

var reference = name({ one : $('#one'), two : $('#two') });

//and in a second moment...
reverence.add({ three : $('#tree') });

您的方法确实具有隐藏私有函数的优势。对于传统的原型继承,没有“private”关键字,所以要记住不要从对象本身外部调用private方法。(谷歌的闭包编译器有一个@private注释,它可以帮助您强制执行,但它并不是一个完美的系统。)

我建议您使用闭包。。。它们在javascript中非常强大……:)


这个对象结构会有什么问题?顺便说一句,似乎无法再次访问
元素。OP不正是这么做的吗?
/** @constructor */
function Name(elememts) {
    this.elements = this._init(elements)
}

Name.prototype.add = function(more) {
    $.extend(this.elements, this._init(more));
}

Name.prototype._init = function(elements) {
    // some stuff...
}
var status = function (status) {
return {
get_status: function ( ) {
return status;
}
};
};

// Make an instance of status.
    var myStatus = status("amazed");
    document.writeln(myStatus.get_status( ));