LoginSignup
0
0

More than 3 years have passed since last update.

JavaScriptのオブジェクトとRubyのクラスの比較

Posted at

JavaScriptのオブジェクトとRubyのクラスについて比較を行います。

class Fruits

  def initialize(name, color)
    @name = name
    @color = color
  end

  def info
    puts "#{@name}#{@color}です。"
  end

end

apple = Fruits.new("りんご", "赤色")
apple.info
#出力結果: りんごは赤色です。

上記のrubyの記述をJavaScriptの記述を私なりに変換してみます。
(より簡単な記述がある場合どうかご容赦願います。)
JavaScriptにおけるメソッドは、関数のことなので...

const Fruits = function(name, color){ //仮引数
  this.name = name //this.が@の代替となっている見たいです。
  this.color = color
  this.getName = function(){ return this.name } //rubyでは省略可能でしたreturn、JavaScriptで省略した場合エラーが出てしまいます。
  this.getColor = function(){ return this.color }
} 

const apple = new Fruits('りんご', '赤色') //実引数 //インスタンスの生成
console.log(`${apple.getName()}${apple.getColor()}です。`)  //console.logがputsの代替です。
             //インスタンス.関数式名で呼び出し。()が無いとエラーが出てしまいます。
//出力結果: りんごは赤色です。

しかし、JavaScriptにおいては以下の記述が可能です。

const Fruits = function(name, color){
  this.name = name
  this.color = color
} 

const apple = new Fruits('りんご', '赤色')
console.log(`${apple.name}${apple.color}です。`)
//出力結果: りんごは赤色です。

定義したrubyにおけるインスタンス変数の値をオブジェクト外で出力を可能にしています。
これをrubyの記述に置き換えるとゲッターを用いることになり、以下の記述になります。

class Fruits

  def initialize(name, color)
    @name = name
    @color = color
  end

  def name
    @name
  end

  def color
    @color
  end

end

apple = Fruits.new("りんご", "赤色")
puts "#{apple.name}#{apple.color}です。"
#出力結果: りんごは赤色です。

以上となります。

最後までご覧頂きありがとうございました。

誤っている点、知識が不足している部分について、ご指摘願えれば幸甚に尽きます。

0
0
3

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