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}です。"
#出力結果: りんごは赤色です。
以上となります。
最後までご覧頂きありがとうございました。
誤っている点、知識が不足している部分について、ご指摘願えれば幸甚に尽きます。