これが問題に関連している機能の両方でOOPの構文、およびオブジェクト:How to implement chained method calls like jQuery?JavaScriptのvarと私は以前ここに尋ね
私はそこにいくつかの時間からのチェックの回答からメソッドを使用している、そしてそれうまくいく。しかし私は私のツールキットの構文をさらに変更したいと思います。
foo(firstarg).bar(secondarg); // should function as the question above.
foo(onlyarg).bar // a function with one argument
foo.bar(onlyarg); // should also work, when a first argument is not appropriate.
foo.bar; // a function without an argument, or returns a static value.
私は同じことをオフに動作するようにすべての4 syntaxsをしたいと思いますfooオブジェクトですが、そうするためのOOPの理解が欠けています。私はいくつかのことを試してきましたが、今のところ私は働くには1 & 2を、そして働くには3 & 4を得ることができます。各関数にルートオブジェクトを返させることによって、連鎖がオプションのまま残っているといいでしょう。
編集:私は明確に、より具体的にする必要があり、ここで私が今持っているものです。私が望むものを
var main = function(obj){ this.obj = obj; };
var tool = function(obj){ return new main(obj); };
main.prototype = {
alertThisPlus : function(plus){
alert(this.obj + ' ' + plus);
},
alertJustThis : function(){
return alert(this.obj);
}
};
使い方
tool('hello').alertThisPlus('world'); // returns alert('hello world')
tool().alertJustThis('hello world'); // returns alert('hello world');
はこれを行うことです。
tool('hello').alertThisPlus('world'); // returns alert('hello world') no change
tool.alertJustThis('hello world'); // returns alert('hello world') does not work
これは本当にOOPではありませんが、ミュートポイントです。 3と4は 'bar'が関数でなければ非互換です。それらをコンパチブルにするためにできることは引数なしで 'bar'を呼び出すことです。 1と2と同様に –
が正しい。私は既に1&2の作業をしており、3&4はすでに作業しています。一度にすべてがうまくいっています。私はjqueryの可能性があることを知っています:例えば$(arg).fooと$ .browserの両方が動作します。 – Fresheyeball