Javascriptアラート()が置き換えられる

このコードを実行すると、なぜグローバルな
alert()関数が置き換えられるのか混乱しています。私はここで
prototype を使用していません。

Moo = (function(){              
    this.alert = 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;
})();

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です