2014-02-08 55 views
-2
function test() 
{ 
    this.lol = []; 
} 

test.hello = function() 
{ 
    this.lol.push("hello world"); 
} 

test.hello(); 

console.log(test.lol); 

只是一個測試類,使我有以下幾點:類中未定義的數組?

^ 
TypeError: Cannot call method 'push' of undefined 

我在做什麼錯?

+0

當,你覺得是你的'測試()'調用(在創建中'lol'場空數組一個)? –

+0

「這是什麼」是js世界中最棘手的問題之一。看看'this' :) http://www.quirksmode.org/js/this.html – lucke84

回答

1

,如果你waant要做到這一點,你必須這樣做,如:

function Test() { 
    this.lol = []; 
} 

Test.prototype.hello = function() { 
    this.lol.push("hello world"); 
} 
var test = new Test(); 
test.hello(); 
console.log(test.lol); 

的一點是,當你使用this鍵盤,你應該把它作爲一個Class還是應該使用提供this爲背景callapply,如:

function testFunc() { 
    this.lol = []; 
} 

testFunc.hello = function() { 
    this.lol.push("hello world"); 
} 

var test = {}; 

//this way you call the testFunc with test as its `this` 
testFunc.call(test); 

//this calls the testFunc.hello with the same `this` 
testFunc.hello.call(test); 

console.log(test.lol);