2016-06-01から1ヶ月間の記事一覧
通常、オブジェクトのプロパティには、どこからでもアクセスできる。 このままだと、状態管理が大変になってしまう。 管理が煩雑になるし、予期していない箇所で値が書き換えられる恐れがあり、バグの温床にもなる。 特定の方法でのみアクセスできる変数を作…
以下、継承を実装していくにあたり、この記事では、次の2つのコンストラクタを用意する。 まず、Personコンストラクタ。プロパティは、nameとageを持つ。そしてプロトタイプに、sayName()とsayMyself()という、2つのメソッドを持つ。 そして、Personコンスト…
instanceof演算子を使うことで、あるオブジェクトが、対象となるオブジェクトのインスタンスかどうかを調べることが出来る。 function Person(){}; var person1 = new Person(); console.log(person1 instanceof Person); //true 上記の例では、person1は、P…
JavaScriptの関数は原則的に、生成された瞬間にprototypeプロパティを持つ。 その中身はオブジェクトであり、constructorプロパティのみを持つ。このプロパティは、関数自身を参照している。 function myFunc(){}; console.log(Object.getOwnPropertyNames(m…
Object.creat()を使うと、[[Prototype]]を指定した上で、オブジェクトを生成できる。 リテラルで生成したオブジェクトの[[Prototype]]はObject.prototypeになるが、Object.creat()を使えば、任意のオブジェクトを[[Prototype]]に設定できる。 Object.creat()…
Prototypeプロパティ JavaScriptのオブジェクトは、自身が持っているプロパティだけでなく、プロトタイプのプロパティにもアクセスすることが出来る。 オブジェクトがどんなプロトタイプを持っているかは、[[Prototype]]プロパティを見れば分かる。 [[Protot…
関数に対してnew演算子を使うことで、オブジェクトを新しく作ることが出来る。 この関数をコンストラクタ、生成されるオブジェクトをインスタンスと呼ぶ。 コンストラクタにおけるthisは、new演算子によって生成されるインスタンスを指す。 function Person(…
オブジェクトも内部属性を持っている。 その一つが、[[Extensible]]。 これはオブジェクトが拡張可能かどうかを示し、これを使うことで、プロパティの追加や変更を制御できる。 Extensible [[Extensible]]はデフォルトではtrueになっている。 この状態だと自…
JavaScriptには様々な内部属性があり、それは二重ブラケット([[]])に囲まれて表現される。 プロパティも、いくつかの内部属性を持っている。 Object.getOwnPropertyDescriptor()とプロパティディスクリプタ まずは、内部属性にアクセスする方法について。 …
以前、テストについて調べていて、mochaというのものが広く使われていることを知った。 だがその時はNode.jsに触ったことがなく、コマンドラインにも強い苦手意識があったので、導入できなかった。 結局QUnitを使ってみることになり、それに対して強い不満が…
プロパティ操作の基本 オブジェクトのプロパティは原則的に、いつでもその内容を変更できる。 後から新しいプロパティを追加したり、既存のプロパティを削除することも出来る。 var person = { name: 'Tom' }; person.age = 30; // プロパティを追加 console…
アクセサプロパティの基本 プロパティには、データプロパティとアクセサプロパティの2種類がある。 必ずどちらかに分類でき、両方の性質を兼ね備えることは出来ない。 データプロパティには値が格納される。 アクセサプロパティは、値は持たず、getterやsett…