雖然learning javascript,但我遇到(製作)了一個根據屬性名稱具有不同行爲的示例。JavaScript「this」關鍵字根據屬性名稱的不同行爲
- 在情況1中它打印未定義(這是可以理解的)
- 在情況2中它打印要麼沒有(FF 54)或一些異常代碼(運行該腳本時看到的)
的問題
爲什麼在屬性名稱更改時會有不同的行爲?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tests</title>
<script>
"use strict";
</script>
</head>
<body>
<ul>
<li>Case 1 <br>
<script>
let myAbstractObject2 = {
text1: "someText",
someMethod1() {
document.write(`[Output] text1 = ${this.text1}!<br>`);
}
};
myAbstractObject2.someMethod1();
(true ? myAbstractObject2.someMethod1 : null)();
</script>
</li>
<li>Case 2 <br>
<script>
let myAbstractObject3 = {
name: "someText",
someMethod1() {
document.write(`[Output] name = ${this.name}!<br>`);
}
};
myAbstractObject3.someMethod1();
(true ? myAbstractObject3.someMethod1 : null)();
</script>
</li>
</ul>
</body>
</html>
它是否有可能從li對象獲取名稱屬性?如果使用say2或text2,你會得到相同的結果嗎? – Tommy
@Tommy屬性取自'window',請參閱[window.name](// mdn.io/window.name) –
@UlysseBN好酷,所以我有正確的想法只是錯誤的對象。 – Tommy