CNode

求解js里面的包装函数有什么作用?

Sshinka发布于13 年前最后回复13 年前5 回复7092 浏览0 收藏
var wrapper = function(obj) {
    this._wrapped = obj;
};

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

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

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

查看回复

回复 (5)

B
buweichiu#1·13 年前

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

S
shinka#2·13 年前
引用 buweichiu這樣在這個 func 裡的 this 就會指向 wrapper 出來的這個 object 本身

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

B
buweichiu#3·13 年前
引用 buweichiu這樣在這個 func 裡的 this 就會指向 wrapper 出來的這個 object 本身

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

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

R
rekey#4·13 年前
引用 buweichiu這樣在這個 func 裡的 this 就會指向 wrapper 出來的這個 object 本身

@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 );
} );
J
JacksonTian#5·13 年前

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

参与回复
登录后即可参与回复。登录