Javascriptで数えたい。
どうしたらいいのかわからない。
おしえてくださいな
おしえてくださいな
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
関数を定義したオブジェクトを返すことによって自作出来ます。
典型的なのはthis
を返す方法です。
lang
1var A = function() {}; 2A.prototype.b = function() { 3 return this; 4}; 5A.prototype.c = function() { 6 return this; 7}; 8 9var a = new A(); 10a.b().c();
投稿2014/10/13 14:16
総合スコア198
0
※10/16追記
いつの間にか質問が変わっていましたね。。
関数を定義するには下記の2通りの方法があります。
lang
1function hoge(arg) { 2 // 何か処理 3 console.log(arg); 4} 5 6var fuga = function (arg) { 7 // 何か処理 8 console.log(arg); 9}
両者の違いとしては、fuga
の無名関数の代入による関数定義は、宣言前に呼び出すとエラーになります。
lang
1hoge(); // こっちはOK 2fuga(); // こっちはエラー 3 4function hoge() { 5 console.log("hoge"); 6} 7 8var fuga = function() { 9 console.log("fuga"); 10}
↑関数定義の方法ここまで
↓メソッドチェーンの実現方法ここから
既に回答されているように、基本的にはthis
を返却するメソッドを作成することでメソッドチェーンを実現出来ます。
呼び出し時の()
を書きたくないのであれば、以下のような方法をとることも出来ますね。
lang
1var obj = {}; 2 3obj.__defineGetter__('hoge', function() { 4 // なにか処理 5 return this; 6}); 7 8// 下記のように書ける 9obj.hoge;
この方法は、SocketIOというWebSocket用のライブラリでも使用されています。
lang
1/* 使用例 (SocketIO) */ 2Socket.prototype.__defineGetter__('json', function() { 3 this.flags.json = true; 4 return this; 5}); 6 7/* 下記のように書ける */ 8socket.emit('hoge', 'hoge'); // 通常の文字列をemit 9socket.json.emit('fuga', {'fuga' : 'fuga'}); // JSONデータをemit
投稿2014/10/14 00:37
総合スコア1679
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。