learning javascriptの間、プロパティ名によって動作が異なる例があります。JavaScript "this"キーワードはプロパティ名に基づいて異なる動作をします
- それが何(FF 54)またはいくつかの異常なコードのいずれかを印刷していないケース2においては、
- (理解可能である)未定義印刷ケース1では(このスクリプトを実行するときに見られる)
質問
プロパティ名を変更すると、別の動作が発生するのはなぜですか?ケース番号2で
<!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オブジェクトからnameプロパティを取得することは可能ですか? say2やtext2を使っても同じ結果が得られますか? – Tommy
@Tommyプロパティは 'window'から取られています。[window.name](// mdn.io/window.name) –
@UlysseBN ok cool、だから私は間違ったオブジェクトだけを考えました。 – Tommy