求解js里面的包装函数有什么作用?
发布于 2年前 作者 shinka 1119 次浏览
var wrapper = function(obj) {
    this._wrapped = obj;
};

我看underscore.js时候看到的,下面这段是包装_

var _ = function(obj) {
    return new wrapper(obj);
};

然后我就不懂这种包装类的用途了… 求指点

5 回复

這樣在這個 func 裡的 this 就會指向 wrapper 出來的這個 object 本身

不好意思 我还是不太明白… 意思是这两快代码能让_能拥有_wrapped属性吗?

可能還得有些上下文才能說清楚為什麼要這麼作,但這樣的好處是可以把函式轉化為 object。

如此一來,如同你說的,就可以讓包裝過後的函式有這個_wrapper 的屬性

@shinka

var wrapper = function ( obj ) {
    this._wrapped = obj;
};
wrapper.prototype.forEach = function ( fn ) {
    var i = 0 , len = this._wrapped.length;
    for ( ; i < len ; i ++ ) {
        fn( this._wrapped[i] );
    }
};
var _ = function ( obj ) {
    return new wrapper( obj );
};
_( [1, 2, 3, 4] ).forEach( function ( item ) {
    console.log( item );
} );

链式操作的需求吧。 wrapper函数生成一个对象,它的原型链上的方法都操作这个_wrapped值,但不返回操作结果,只返回这个对象自身return this以便链式操作。

回到顶部