1

次のように使用できるように、2 つのメソッド (alert と console.log) を使用して関数 (オブジェクト) を記述する方法:

fname("text").alert //-now text is alerted;
fname("text").cons //-now text shows in console log. 

メソッドは、実行方法によって重要ではありません。私はそれが自己請求機能でなければならないことを知っていますが、私はそれを行うことができません。このように使用したくありません-fname.alert( "text")。

こんにちはクリス

4

2 に答える 2

5

どこでも機能する正気の方法では不可能です。投稿した例では、これらのプロパティのアクセサーを定義する必要があり、それは最新の JS エンジンでのみ機能します。

とにかく、実際にこれを行うコードは次のとおりです。ただし、これを実際のアプリケーションで使用しないでください。より良い解決策については、最後のコード ブロックを参照してください

function fname(message) {
    var obj = {};
    Object.defineProperty(obj, 'alert', {
        get: function() {
            alert(message);
        }
    });
    Object.defineProperty(obj, 'cons', {
        get: function() {
            console.log(message);
        }
    });
    return obj;
}

これfname('hello').alertが機能するのは、プロパティの getter 関数が実行されるためです。このような関数は通常、値を返す必要がありますが、メッセージを表示alertするなどの処理を停止するものは何もありません。alert()


ただし、どこでも機能する方法で達成できることは、次のようなものです。

fname('text').alert();
fname('text').cons();

これは次のように実行できます。

function fname(message) {
    return {
        alert: function() {
            alert(message);
        },
        cons: function() {
            console.log(message);
        }
    }
}
于 2012-11-30T16:15:41.577 に答える
4
function fname(str) {
   return {
      alert:function(){alert(str)},
      cons:function(){console.log(str)}
   }
}

アラートfname("text").alert()を実行してtextいます。

于 2012-11-30T16:16:19.027 に答える