Javascript
1var c = { 2 name: 'The c objects', 3 log: function() { 4 this.name = 'Updated c object'; 5 console.log(this); 6 7 function setname(newname) { 8 this.name = newname; 9 } 10 setname('Updated again! The c object'); 11 console.log(this); 12 } 13} 14 15c.log();
上記を実行すると、this.name = 'Update c object';
は反映されますが、関数setname
内のthis.name = newname;
は反映されず、結果としては、下のようになります。
Console
1{ name: 'Updated c object', log: [Function: log] } 2{ name: 'Updated c object', log: [Function: log] }
両者ともcオブジェクト内に記述されているため、this
はcオブジェクトを示し、2回目のconsole.log(this)
ではname
がUpdated again! The c object
になると予想したのですが、なぜ上のような結果になるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/26 10:40