読者です 読者をやめる 読者になる 読者になる

竹林のゆとりブログ

山奥で生活し、日々の思いをつらつらと書くブログ。 IT、数学、アニメなど。

javascriptの文法~object編~

Javascriptの教科書(http://bdcampbell.net/javascript/book/javascript_the_good_parts.pdf) を読んでいる。

自分が読んだ3章を軽くまとめてみた。

今回のコンセプト

英語の勉強も含めているので、あえて、今回は辞書を一度も使わない。 数学での実体験として、英語に慣れてくると基本的に、辞書で調べることがなくなるので。

Javascript 3 chapters Objects

Introduction

type は numbers,strings,booleans,null,undefinedとObjects のみ。Objectsはkeyがmutable
mutabeとは、programmerの意志で値を消せるという意味(と推測)
(deleteが定義されていることを意味する)

program上にclassが存在せず、 objectに対してobjecetが継承できる。構造体同士に上下関係が定義されているようなもの。
どうやら、これをprototypeと言っている模様

Object Literals

Objectは以下の形式で定義する。 var(定義であることを示す) objectを識別する名前 {}でくくる。 そこにkey名(strigns type) : value(typeは何でもよい ) key名は必ず文字列なので、""でくくらなくてもよい。

疑問

  • 空文字を""くくらなくても可能なのか?  →実験する限り不可能
  • 定義されている変数名と同じものはlegalなのか?
    →文字列になるので可能

使えても、使わないので、答えの厳密な調査はしない。

Retrieval

objectのvalueを得るときは、object名["key名"]と書く。

定義されていないものにはundefinedクラス?が得られる。 undefinedに対して、key名を指定するとTypeError Exceptionが発生する。

疑問

  • []の場合に""でくくらないとどうなるのか?
    →試した限り、エラーとなる
  • わざわざlegalであることを強調しているが、illegalなものは定義できないのでは?それとも定義はできるが、参照できないようなものが存在するのか?

Update

当たり前なので略

Reference

Objects are passed around by reference They are neve copiedと

とは、メモリ上の実態が複製されないということ。パスの情報がコピーされるという意味。いわゆる参照渡し。

a=b=c={};

上記の場合、メモリ上に{}を一つ生成し、そこへのアドレスパスをa,b,cで共有したということ。

Prototype

Objectに対して、その親Objectを定義すること。

object.protype = parentobject で定義可能。

Reflection

typerof メソッドを使えば、値のクラスがわかる。 ただし、クラスにはfunctionもあるので、 typeof A.toStringはStringではなく、functionとなることに注意。

Enumeration

配列に対してする操作みたいなもの

objectに対して、操作できる。

var name; for (name in another_stooge){  action }

とできる、値に持つ、functionやprototypeについては不要な場合はhasOwnProperty functionを用いてはじくことができる。

上のループは順序を指定できない。その場合はkey名の配列を作成し、配列の順序に応じてループさせることで対応可能。

delete

delete another_stooge.nickname とすることで、nickname propertyを削除できる。(ただし、overrideしている場合はoverrideしているものだけが聞ける)

Global Abatement

Global変数があまりに作りやすいので Objectを活用して、うまいnamesapaceを作るべきである。

RubyにおけるModuleによるnamespaceの作成と同じ。

疑問

いつglobal変数なのか?
→今後に期待

まとめ

  • objectはkeyと値の組みで構成されている。
  • prototypeという関数で継承関係を定義できる

今後も進めたら訳を残しておきたいと思います。

余談

自分でテストする際に,:が抜けて失敗する。