在Apple的「類」中,嵌套函數countSeeds()
如何檢索值this.price
?在嵌套函數中使用`this`作爲父函數
的jsfiddle:http://jsfiddle.net/VGqEa/
Apple = function() {
this.price = 17
this.cutOpen = function() {
console.log(this.price);
countSeeds();
function countSeeds() {
console.log(this.price);
}
}
}
var apple = new Apple();
apple.cutOpen();
輸出
17
undefined
難道'countSeeds()'改變'this'變量本身? – Nyxynyx
這個對象在一個函數的上下文中被設置爲三個中的一個:1.如果該函數是用新的(新的Apple)調用的,則這指的是將由構造函數返回的對象。 2.如果使用點語法(apple.cutOpen())或使用call或apply方法對某個對象調用該函數,則它指向該對象。 3.如果直接調用該函數(countSeeds()),那麼這指的是全局對象,它在瀏覽器中是窗口。 – Thayne
您忘記了'.call()','.apply()','.bind()',這是括號語法,相當於點符號和(即將標準化的)箭頭函數。要記住的重要一點是執行上下文的'this'綁定是通過調用函數的方式來定義的。 –