関数式とオブジェクト向けの呼び出しを同時にサポートするjsライブラリを手書きで書きします.

1311 ワード

同時にサポートする関数式と対象向けの二つの使い方を書くundersscore.jsの実現
(function(){
     var _=function(obj){
         if(this instanceof _){return obj;}
         if(!(this instanceof _)){return new _(obj);}
     }
        var root=this;
        root._=_;
    
        _.log=function(){
            console.log(123);
        }
        _.isFunction=function(obj){
            return typeof obj=='function';
        }
        _.function=function(obj){
            var names=[];
            var key;
            for(key in obj){
                if(_.isFunction(obj[key])){
                    names.push(key);
                }
            }
            return names.sort();
        }
        _.each=function(obj,callback){
            var len,i=0;
            if (obj.__proto__.constructor==Array) {
                len=obj.length;
                for(;i
どのように新しい方法を追加しますか?例えば、sayHelloの方法を追加します.
カスタムメソッドの開始とカスタムメソッドの終了の間に以下のコードを挿入します.
    _.sayHello=function(){
        console.log('Hello');
    }
次のコードで呼び出すことができます.
_().sayHello();//     

var obj = new _();
obj.sayHello();//