質問: function(s){ console.log("Replaced Alert! " + s); }; return this; })(); alert("poit"); ``` コードを実行すると警告ポップアップが表示されず、代わりに上記のコードが実行され、テキストがコンソールに表示されます。誰か説明できますか?
回答: `this` inside the invoked anonymous function refers to `window`. So, you're overwriting the global `alert` method. メソッド `alert` を使用して新しいオブジェクトを作成する場合は、次のようにします。 ``` Moo = (function(){ var obj = {}; obj.alert = function(s){ console.log("Replaced Alert! " + s); }; return obj; })(); ``` 別の方法: ``` Moo = (function(){ var obj = new function(){}; obj.prototype.alert = function(){...} return new obj; })(); ```