4 回答

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
當(dāng)你這樣做
user[name]
這會(huì)查找存儲(chǔ)在name
變量中的屬性。例如,如果你有
const name = 'foo'; const result = user[name];
這相當(dāng)于:
const result = user.foo;
因?yàn)?code>foo存儲(chǔ)在name
變量中。
同樣的事情正在發(fā)生age
。
相反,當(dāng)您使用引號(hào)時(shí),解釋器不會(huì)查找變量名,它只使用純字符串:
const result = user['foo']
相當(dāng)于
const result = user.foo;
但是,請(qǐng)記?。鹤詈帽苊馐褂迷?code>name變量,因?yàn)樵陧攲?,?a >window.name
必須始終是一個(gè)字符串,如果您不期望它可能會(huì)導(dǎo)致奇怪的錯(cuò)誤。

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
當(dāng)你做 user[name]
你真正在做的事情是傳遞一個(gè)名為 name 的變量,因?yàn)槟銢]有聲明一個(gè)名為 name 的變量,你將得到未定義。
當(dāng)您正在做user["name"]
您正在做的事情時(shí),您正在告訴您要訪問name
對(duì)象內(nèi)部的密鑰。
你也可以
user.name
它會(huì)返回相同的東西user['name']

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
問題是當(dāng)您編寫user[name](假設(shè)名稱為Daniel)時(shí),您實(shí)際上是在嘗試訪問其鍵為Daniel有效鍵的值。如果這種情況Daniel是鍵的值name。嘗試這樣做。
document.getElementById("demo").innerHTML = user.name; // Return undefined
document.getElementById("demo").innerHTML = user["name"]; // Return Daniel.
document.getElementById("demo").innerHTML = user.age; // Return nothing. Blank
document.getElementById("demo").innerHTML = user["age"];
使用.name而不是[name]獲取鍵的值name。

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
您沒有定義任何名稱和年齡變量,因此user[name]和user[age]將是未定義的。
您需要定義變量var name = "name"并使用user[name]如下
<html>
<body>
<h2>JavaScript Objects</h2>
<p id="demo"></p>
<script>
function User(name,age){
this.name=name;
this.age=age;
}
var user = new User('Daniel',45);
var name = "name";
var age = "age";
document.getElementById("demo").innerHTML = user[name]; // Return undefined
document.getElementById("demo").innerHTML = user["name"]; // Return Daniel.
document.getElementById("demo").innerHTML = user[age]; // Retutn nothing. Blank
document.getElementById("demo").innerHTML = user["age"]; // Return 45
</script>
</body>
</html>
添加回答
舉報(bào)