【javascript】オブジェクト、ハッシュ、プロパティ
もともと未経験からwebエンジニアに転職して1年間railsを使ってる企業で働いていましたが、最近転職してjabascriptを使うようになったので、基本のキから勉強し直しているので備忘録として記します。
まだまだなので指摘事項あればお願いしたいです。
もともと私はrubyからプログラミングを始めたので、javascriptにおける配列の種類の名前がrubyとごっちゃになり混乱することがあったのでここで記事にまとめて整理しておこうと思って今回書きました。
オブジェクト
var = {
id: 1,
name: "雑草"
}
javascriptの世界では"連想配列"と言う言葉を特に使わない。"オブジェクト"と呼ぶ。
ではなぜオブジェクトと呼ぶのか。
普通、連想配列は値としてデータだけしか入れることはできないが(rubyの場合)、オブジェクトは関数を格納することができる。
{
id: 1,
name: "雑草",
getName: function(){console.log(this.name)}
}
値としてデータだけしか入っていないと、連想配列のように使うことができるが、関数を格納できたりするので、オブジェクトと呼んでいるのだそう。
プロパティ
プロパティとは「名前と値の組見合わせ。
var obj = {}
obj.hoge = "a"; //プロパティ
console.log(obj); //{hoge: a}
console.log(obj.hoge); //a
console.log(obj["hoge"]); //a
rubyではハッシュと言うものがあり、書き方はjavascriptのオブジェクトと全く同じ書き方で定義できるが、
中身の「名前と値の組み合わせ」とはわざわざ呼ぶことはなかった。
ではなぜプロパティと呼ぶのか。
それは先ほども書いたようにオブジェクトは値に関数を格納することができる。「オブジェクト.関数名」として呼び出すものをJavascriptでは"メソッド"と呼ぶ。これと明確に区別するためにプロパティーと言う呼び方をするのだそう。間違っていたらご指摘を。
配列
配列はオブジェクトとほぼ同じ使い方をできる。
var arr = []
arr.hoge = "a";
console.log(arr); //[hoge: a]
console.log(arr.hoge); //a
console.log(arr["hoge"]); //a
arr.fnc = function(a){
console.log(a);
}
arr.fnc("b"); //b
では配列とオブジェクトの違いは何か?調べてもあまりよくわからなかったが、
- 数値だけが順番にならんでいるようなデータならArrayが適切
- データをまとめて扱うならObjectが適切
- 表のように複数のレコードを扱うならArray+Object
と言うことらしい。どちらを使うかは開発者の自由。
Discussion