0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby】レシーバとオブジェクトの違い。RubyのオブジェクトとJSのオブジェクトの違い

Last updated at Posted at 2020-12-17

個人メモです。

  • レシーバとは何か?
  • レシーバとオブジェクトの違い
  • RubyとJavaScriptのオブジェクトの違い

##レシーバとは何か?

メソッドの左側のデータをレシーバと呼ぶ。

レシーバ.メソッド

####レシーバの例

  • obj.lengthobj
  • arr.present?arrをレシーバと呼ぶ。

##レシーバとオブジェクトの違い

Rubyにおけるオブジェクトはすべてのデータのこと。
なので、以下はすべてオブジェクトとなる。

オブジェクトの例

  • 100
  • "String"
  • {:a=>1, :b=>2}
  • [1, 2, 3]
  • obj = {:a=>1, :b=>2}obj
  • arr = [1, 2, 3]arr
  • range = 1..3range

つまり、レシーバとはメソッドの対象になったオブジェクトのことを指す。


##RubyとJavaScriptのオブジェクトの違い 一番混乱したのがコレ。JSとRubyでオブジェクトの定義が異なる。

###JSの場合
JSのオブジェクトとは、KV(キー、バリュー)のペアであるプロパティを持ったデータのこと。

例: obj = {a:1, b:2, c:"xxx"} 

###Rubyの場合
Rubyの場合はすべてのデータをオブジェクトと呼ぶ。

JSでいうオブジェクトはRubyではハッシュとなる。

▼ハッシュ(キーが文字列の場合)
JSのオブジェクトのプロパティ名を文字列にしたもの。

例: obj = {"a" => 1, "b" => 2, "c" => "xxx"}


**▼ハッシュ(キーがシンボルの場合)** JSのオブジェクトのプロパティ名をシンボルにしたもの。

例: obj = {:a => 1, :b => 2, :c => "xxx"}


JSのように、`obj = {a:1, b:2, c:"xxx"}` と定義すると、自動でシンボルの形に変換される。
ruby
obj = {a:1, b:2, c:"xxx"}
=> {:a=>1, :b=>2, :c=>"xxx"}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?