2017-03-24 12 views
0

私は、JavaScriptパターンの1つを連鎖しています。親関数を返す内部関数、どうですか?

ここで私は、最後の行では、この

function thisFunc(fullName){ 
    var that = this; 
    this.firstName = function(name){ 
     fullName = fullName + name; 
     return this; 
    }; 

    this.lastName = function(name){ 
     fullName = fullName + ' ' + name; 
     return that; 
    }; 

    this.show = function(callback){ 
     callback(fullName); 
     return that; 
    }; 
} 

var x = new thisFunc(''); 
x.firstName('Karthikeyan').lastName('Sundararajan').show(function(result){ 
    console.log(result); 
}); 

var y = new thisFunc(''); 
console.log(y.firstName('Karthik')); 

のようなコードを持っていた機能のfirstNameの戻り値を印刷し、私はこのような出力を得ています。

thisFunc {firstNameの[機能]とLastName:[機能]、ショー: [機能]}のfirstNameの親である

をそれがthisFuncを返す理由は、私はそれがfirstNameのを返すであろうと予想しました。そして、私は、「これを返す」と「それを返す」と言ったとき、私は同じ結果を見ています。

+0

firstName関数は 'that'を返し、オブジェクト 'y'を返します。結果は良いです。 あなたの機能は連鎖するようになっているため、毎回あなたのオブジェクトを返すようになります。 フルネームを追加したい場合は、 のような関数を追加します。this.getFullName = function(){return fullName; }; また、show関数を使用してコールバックでfullNameを取得します。 – PortePoisse

答えて

2

firstName()の返品が実際の親機能であるためです。あなたは、それはそれを呼び出すことはありませんfirstName機能を返すようにしたい場合は、ちょうど私が私が正しくあなたの質問を理解願ってい

console.log(y.firstName); 

を行います。

関連する問題