質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

6回答

541閲覧

メソッドチェーンの次のメソッドを呼び出す際に必要になってくるオブジェクトの事を引数と呼ぶのか

tseki_is

総合スコア9

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/05/25 07:32

編集2020/05/30 10:41

とあるサイトをみていたらメソッドチェーンで最初のメソッドの返り値になるオブジェクトの事を引数と呼んでいました。

具体的に
メソッドA.メソッドB

とありメソッドAでメソッドBを持っているオブジェクトが返ってくる訳ですがこのオブジェクトの事をメソッドBの引数と呼ぶのでしょうか?

引数とは
メソッド(引数、引数)の()に渡すものだと思っておりましたが、メソッドチェーンにて次のメソッドを呼ぶ為のオブジェクトの事も引数と呼ぶのでしょうか?

引数の定義を見ると
リンク内容

引数とは、プログラム中で関数やメソッド、 サブルーチンなどを呼び出すときに渡す値のこと。 渡された側はその値に従って処理を行い、結果を返す。 OSなどで利用者がコマンドを実行する際に指定する パラメータなどを指すこともある(コマンドライン引数)。

とあり、メソッドチェーンにおいては次メソッドを呼び出す時に渡す値とも呼べなくはないなと思い質問させて頂きました。

###追記
追加、修正以来がありましたので、「とあるサイトのURL」を追記します。
リンク内容
のRxJSのclickイベントという項目の
20行目にある(スマホでみているので、pcだと行が違うかも知れません)
「Observableがsubscribeの引数に渡り」と言う部分です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/05/25 07:35

「とあるサイト」の方も示していただけませんか?
tseki_is

2020/05/26 10:20

ソースでは import { fromEvent } from 'rxjs'; fromEvent(document, 'click').subscribe(event => console.log(event)); となっており、fromEvent(document, 'click')の返り値がObservableオブジェクトとなっており、それがsubscribeの引数に渡っていると書いてありましたが、そもそもsubscribeの引数のevent自体がObservableオブジェクトと言うことであり、subscribeが自分が属するオブジェクト(this)を引数にとっているのであれば、「subscribeがObservableオブジェクト」を引数に取るという文面も納得出来るような気がするのですが、そういう事でしょうか?
think49

2020/05/30 02:15 編集

修正依頼欄は質問ではないので、「編集」して質問文を修正して下さい。 Zuishinさんは気がついてくれましたが、既存の回答者には通知が来ないので、本来、気がつきません。
tseki_is

2020/05/30 10:24

了解しました。
guest

回答6

0

ベストアンサー

4歳娘「パパ、constしか使わないで?」 - Qiita

このコメントのことじゃないかと思いますが、これは引数で合っています。普通メソッドチェーンと言うと、最初の関数がオブジェクトを返し、次の関数はその戻り値のメソッド呼び出しです。この場合は引数ではありません。

しかし、この記事ではコールバックを引数として渡しているので、引数で間違いありません。

なるほどこうするとメソッドチェーン風に見た目をごまかして?作りこむことができるんだなあ、と勉強になりました。

とあるように、これはメソッドチェーンであり、通常言われるところのメソッドチェーンとは趣が異なります。

追記

追記・編集依頼にある文面ですが、

RxJS入門#1基本の概念をひとつずつ学ぶ - Qiita

ここではEventオブジェクトをラッパーしたObservableがsubscribeの引数に渡り、その後の処理に使用できるようになっています。

これは完全な誤りです。subscribe の引数は event => console.log(event) という関数オブジェクトであり、Observable ではありません

subscribe のオーバーロードとして Observable ではなく Observer を渡すものがありますが、ここで使われているのはそうではありませんので、二重に間違っています。

整理すると、subscribe は fromEvent の返す Observable オブジェクトに所属するメソッドであり、Observer や関数オブジェクトなどを引数に取ります。

初心者であればあるほど、「わかりやすそうに見える」いい加減なサイトではなく、きちんとした情報にあたりましょう。よけいにわからなくなるだけです。

RxJS - Observable

投稿2020/05/25 08:41

編集2020/05/30 02:52
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2020/05/30 02:14 編集

> subscribe の引数は event => console.log(event) というラムダ式であり、 ECMAScriptでは「ラムダ式」を「アロー関数」と呼び、パース後は「関数オブジェクト」になります。 > 初心者であればあるほど、「わかりやすそうに見える」いい加減なサイトではなく、きちんとした情報にあたりましょう。 その通りなんですが、「きちんとした情報」の判断条件がない人には厳しいかもしれません。 https://jsprimer.net/basic/function-declaration/ https://ja.wikipedia.org/wiki/%E5%BC%95%E6%95%B0 とりあえず、仮引数と実引数を覚えておけば、疑問は解けると思います。 --- 質問の趣旨としては、こちらが正解だと思います。 高評価しようかと思いましたが。後出しジャンケンに答えた回答が勝利する図式は先に回答した方に失礼なので、悩んで結局、止めました。 5/26に修正依頼にコメントを飛ばしても回答者には通知が来ないので気が付かないのでしょうね…。 むしろ、Zuishin さんはよく気がついたと思います。
Zuishin

2020/05/30 02:41

ありがとうございます。ラムダ式を関数オブジェクトに直しました。
tseki_is

2020/05/30 10:55

色々ご迷惑をかけ、申し訳ありません。 どの回答者様も非常に参考になったのですが、深いところまで答えて頂いたこちらの回答者様をベストアンサーとさせて頂きました。 サイトの判断等参考にさせて頂きます!
guest

0

具体的に

メソッドA.メソッドB
とありメソッドAでメソッドBを持っているオブジェクトが返ってくる訳ですがこのオブジェクトの事をメソッドBの引数と呼ぶのでしょうか?

コードで書いて、分解するとわかります。

// oj.methodA().methodB() let rsltOfA = oj.methodA(); let rsltOfB = rsltOfA.methodB();

メソッドBを持っているオブジェクト(rsltOfA) は oj.methodA()返値 です。
そして、rsltOfAmethodB() を有する オブジェクト(インスタンス)です。


methodB(...args)argsmethodB()の引数になります。
数学の式と同じですね。

Y = F(x)

投稿2020/05/25 08:16

編集2020/05/25 08:23
AkitoshiManabe

総合スコア5432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

普通はそれを「メソッドBのレシーバー」と言います。

投稿2020/05/25 11:34

otn

総合スコア84498

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

とあるサイトをみていたらメソッドチェーンで最初のメソッドの返り値になるオブジェクトの事を引数と呼んでいました。

用語としてはほとんど議論の余地なく間違っていると思いますが、たとえば、Pythonのメソッドは引数にself(JavaScriptでいうthis)を持たせることが約束となっていますので、気持ちはわからないでもないです。

でも、そこまで広義にしてしまうと、レキシカル環境すべてが引数と言えなくもない……

投稿2020/05/25 08:29

Lhankor_Mhy

総合スコア36072

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

とあるサイトでどう記述されているかをみてみないと定かではありませんが、
メソッドチェーンはあくまで、JavaScriptの関数呼び出しの仕様を利用した実行方法の一つに過ぎません。
(もちろん、他の言語でもメソッドチェーンが可能な言語は多数存在する)
よって、引数とは言えません。

質問のメソッドチェーンは、
あくまで、メソッドAが、処理の最終で返してるオブジェクトが、メソッドBを保有しているために実行できるのであって、
**メソッドAが返している値を、メソッドBが"引数として使用している"**わけではありません。
メソッドB(メソッドA());とかだったら、引数として使用している、となります。

投稿2020/05/25 07:55

miyabi_takatsuk

総合スコア9528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問の意図がよくわかりませんが、メソッドチェーンする場合
メソッドに指定するのはコールバック関数ですよね?
一般的には引数とは言わないと思います

投稿2020/05/25 07:54

yambejp

総合スコア114757

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問