4 回答

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

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

TA貢獻1868條經(jīng)驗 獲得超4個贊
問題是當(dāng)您編寫user[name](假設(shè)名稱為Daniel)時,您實際上是在嘗試訪問其鍵為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貢獻1858條經(jīng)驗 獲得超8個贊
您沒有定義任何名稱和年齡變量,因此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>
添加回答
舉報