const user1 = {
name: 'Sherlock Holmes',
address:{
street:'Baker street',
number:"221B",
},
sayMyAddress:function (){
console.log(`My address is ${this.address}`)
console.log(this.address)
}
}
user1.sayMyAddress()
結果:
我的地址是 [object Object]
{ 街道:'貝克街',編號:'221B' }
為什么this關鍵字在第二種情況下顯示地址值而在第一種情況下不顯示?這種情況下的范圍不在物件用戶中?
uj5u.com熱心網友回復:
如我們所料,地址轉換為字串的結果是 '[object Object]'。代碼中的一個小改動將產生預期的結果:
const user1 = {
name: 'Sherlock Holmes',
address: {
street: 'Baker street',
number: "221B",
},
sayMyAddress: function() {
console.log(`My address is ${this.address.number} ${this.address.street}`)
}
}
user1.sayMyAddress()
.as-console-wrapper { max-height: 100% !important; }
toString()您還可以在地址物件上添加一個函式:
const user1 = {
name: 'Sherlock Holmes',
address: {
street: 'Baker street',
number: "221B",
toString() { return `${this.number} ${this.street}` }
},
sayMyAddress: function() {
console.log(`My address is ${this.address}`)
}
}
user1.sayMyAddress()
.as-console-wrapper { max-height: 100% !important; }
uj5u.com熱心網友回復:
this.address是一個物件,所以即使如果console.log你直接將物件傳遞給它,它足以輸出帶有值的完整物件,如果你在字串中使用它,你會得到[object Object].
像這樣試試
console.log(`My address is ${this.address.street} ${this.address.number}`)
uj5u.com熱心網友回復:
您正在嘗試記錄物件本身。所以輸出結果幾乎是預期的。
更改日志行:
console.log(`My address is ${this.address}`)
到:
console.log(`My address is ${this.address.street} ${this.address.number}`)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/453246.html
標籤:javascript
