求解js里面的包装函数有什么作用?
var wrapper = function(obj) {
this._wrapped = obj;
};
我看underscore.js时候看到的,下面这段是包装_
var _ = function(obj) {
return new wrapper(obj);
};
然后我就不懂这种包装类的用途了… 求指点
5 回复
這樣在這個 func 裡的 this 就會指向 wrapper 出來的這個 object 本身
不好意思 我还是不太明白… 意思是这两快代码能让_能拥有_wrapped属性吗?
可能還得有些上下文才能說清楚為什麼要這麼作,但這樣的好處是可以把函式轉化為 object。
如此一來,如同你說的,就可以讓包裝過後的函式有這個_wrapper 的屬性
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
以便链式操作。