2014-02-28 32 views
2
function myFunc(){ 
    this.taste = 'yummi'; 
    console.log(this.taste); 
    console.log(typeof this);//logs object 
} 
var noNewObj = myFunc(); 
console.log(typeof noNewObj);//logs undefined 

在myFunc中this關鍵字指新對象是noNewObj,但在函數外部,變量noNewObj被聲明爲沒有新關鍵字的函數,而不是對象,爲什麼?爲什麼聲明變量沒有新關鍵字的變量是未定義的?

+0

myFunc的不把參選的noNewObj – Rex

回答

3

noNewObj分配調用myFunc(),這是undefined,因爲沒有明確的返回值被賦予的返回值

如果你試圖使用myFunc()作爲一個構造函數,你需要使用new關鍵字,像這樣:

var noNewObj = new myFunc(); 

另外,如果你的意思是使用myFunc()作爲一個構造函數,你應該啓動它用大寫字母表示,因爲這是一種常見的Javascript慣例,表示函數是用於調用new

0

不,這是錯誤的:在myFunc的內this關鍵字是指新對象noNewObj

如果不使用新的關鍵字,則函數內部的「這個」變量將參考全局對象。

而且沒有分配返回值,所以它的日誌未定義。

0

myFunc不看跌/在noNewObj返回參選, 所以它是不確定的

function myFunc(){ 
    this.taste = 'yummi'; 
    console.log(this.taste); 
    console.log(typeof this);//logs object 
    //return something here 
}