我正在學習有關ES6詞彙this
,我反駁這個例子中使用的詞彙是:在ES6
let person = {
name : 'Alex',
cars : ['Ferrari','Jaguar','Bugatti','Cadillac'],
toString : function(){
for(let car of cars){
console.log(`${this.name} has ${car}`)
}
}
}
person.toString();
所以我們說,我想給ToString函數轉換爲數組功能,所以我也會有這樣的:
let person = {
name : 'Alex',
cars : ['Ferrari','Jaguar','Bugatti','Cadillac'],
toString :() => {
for(let car of cars){
console.log(`${this.name} has ${car}`)
}
}
}
person.toString();
在這個例子中cars
是不確定的,爲什麼我收到了,我怎麼能叫cars
在這個例子中person
對象。
這同樣適用此:
let person = {
name : 'Alex',
cars : ['Ferrari','Jaguar','Bugatti','Cadillac'],
toString :() => {
cars.forEach(car => console.log(`${this.name} has ${car}`));
}
}
person.toString();
第1步,不要使用箭頭函數,它的'this'是不同的。第2步迭代'this.cars',而不是'cars' –
,但是,對於你的最後一個例子,不要使用箭頭作爲toString,但是請使用forEach函數的箭頭...所以(簡寫)'toString(){this .cars.forEach(car => ...' –
'cars'是一個對象屬性,它必須用'obj.cars'語法訪問,不能以'cars'的形式訪問它,它不是局部變量。 ,沒有將'this'隱式附加到屬性中,就像其他語言一樣,必須引用'person.cars'。 – jfriend00