2011-08-17 4 views
1

言ってやるが、私は2つの機能があります。2つの関数をマージしますか?

function foo() { 
    this.lorem = 'ipsum'; 
} 

function boo() { 
    console.log(this.lorem); 
} 

をそして私は、彼らが同じthisを共有できるようにfoo関数の最後にboo関数を挿入します。どうすればいい?

+1

私はあなたが何を理解してないと思います 'これは実際に言及している。これは 'window'オブジェクトを参照します。あなたは 'lorem'をグローバルにしています。 「これ」の「共有」はありません。どちらの関数においても、 'this'はすでに同じオブジェクト(' window')を参照しています。 'foo(); console.log(this.lorem); 'が動作します。 –

答えて

1

このようにします。すべての深刻さで

function foo() { 
    this.lorem = 'ipsum'; 
    console.log(this.lorem); 
} 

、あなたの質問には確実に答えられるには十分明確ではありません。あなたが別々にそれらを維持したい場合に

1

myClass.foo(); 

Live test casefooを有効にするには次に

var myClass = { 
    foo: function foo() { 
     this.lorem = 'ipsum'; 
     this.boo(); 
    }, boo: function boo() { 
     alert(this.lorem); 
    } 
}; 

function foo() { 
    this.lorem = 'ipsum'; 
    boo(this); 
} 

function boo(element) { 
    console.log(element.lorem); 
} 
1

同じ文脈の下でそれらの両方を包みます。

+0

これはクラスではなく、オブジェクトです。 –

+1

私はあなたが 'foo:function(){...}';を意味すると思う – knittl

0
function foo() { 
    this.lorem = 'ipsum'; 
    boo.call(this); 
} 

function boo() { 
    console.log(this.lorem); 
} 

foo(); 
0

既存の関数がこれを行う変更したくない場合は、次の

function foo() { 
    this.lorem = 'ipsum'; 
} 

function boo() { 
    console.log(this.lorem); 
} 


function bar() { 
    boo.call(new foo); 
} 

bar(); 

は、ここでのアクションでそれをJSFiddleです: http://jsfiddle.net/8Wb6T/

関連する問題