以下のように、JavaScript のサンプル コードがいくつかあります。ボタンがクリックされると、同じ名前のメソッドがグローバル レベルに存在する場合でも、オブジェクトxyzのdoSomethingという名前のプライベート メソッドが常に呼び出されます。JavaScript レベルで何が起こっているのかを理解しようとしています。
質問: この状況で、同じ名前のグローバル メソッドではなく、常にdoSomethingのプライベート メソッドが呼び出されるのはなぜですか?
<script>
function doSomething() {
alert('this is a global method available to all');
}
var xyz = function() {
var x = {};
x.FirstName = "Mike";
x.changeSeat = function() {
doSomething();
}
function doSomething() {
alert('this is a private method');
}
return x;
}();
</script>
<button type="button" onclick="xyz.changeSeat();">Private or Global method is called when same name methods exist?</button>