2011-08-17 109 views
1

說,我有兩個功能:合併兩個函數?

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

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

而且我想在foo函數的末尾插入boo功能,使他們能夠共享相同的this。我會怎麼做?

+1

我不認爲你明白什麼'這'實際上是指。它指的是'window'對象。你正在'lorem'全球化。沒有涉及「this」的「共享」。在這兩個函數中,this都指向同一個對象('window')。甚至'foo(); console.log(this.lorem);'會工作。 –

回答

1

是否這樣?

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

嚴肅地說,你的問題不夠清楚,不能可靠地回答。

1

倘若你想將它們分開:

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

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

總結他們都在同一環境下:

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

然後激活foo

myClass.foo(); 

Live test case

+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/