30歳からのプログラミング

30歳無職から独学でプログラミングを開始した人間の記録。

2016-06-01から1ヶ月間の記事一覧

プライベート変数

通常、オブジェクトのプロパティには、どこからでもアクセスできる。 このままだと、状態管理が大変になってしまう。 管理が煩雑になるし、予期していない箇所で値が書き換えられる恐れがあり、バグの温床にもなる。 特定の方法でのみアクセスできる変数を作…

JavaScriptにおける、継承の方法

以下、継承を実装していくにあたり、この記事では、次の2つのコンストラクタを用意する。 まず、Personコンストラクタ。プロパティは、nameとageを持つ。そしてプロトタイプに、sayName()とsayMyself()という、2つのメソッドを持つ。 そして、Personコンスト…

instanceof演算子について

instanceof演算子を使うことで、あるオブジェクトが、対象となるオブジェクトのインスタンスかどうかを調べることが出来る。 function Person(){}; var person1 = new Person(); console.log(person1 instanceof Person); //true 上記の例では、person1は、P…

constructorプロパティについて

JavaScriptの関数は原則的に、生成された瞬間にprototypeプロパティを持つ。 その中身はオブジェクトであり、constructorプロパティのみを持つ。このプロパティは、関数自身を参照している。 function myFunc(){}; console.log(Object.getOwnPropertyNames(m…

Object.creat()とプロトタイプチェーン

Object.creat()を使うと、[[Prototype]]を指定した上で、オブジェクトを生成できる。 リテラルで生成したオブジェクトの[[Prototype]]はObject.prototypeになるが、Object.creat()を使えば、任意のオブジェクトを[[Prototype]]に設定できる。 Object.creat()…

プロトタイプの基礎

Prototypeプロパティ JavaScriptのオブジェクトは、自身が持っているプロパティだけでなく、プロトタイプのプロパティにもアクセスすることが出来る。 オブジェクトがどんなプロトタイプを持っているかは、[[Prototype]]プロパティを見れば分かる。 [[Protot…

new演算子による、インスタンスの作成

関数に対してnew演算子を使うことで、オブジェクトを新しく作ることが出来る。 この関数をコンストラクタ、生成されるオブジェクトをインスタンスと呼ぶ。 コンストラクタにおけるthisは、new演算子によって生成されるインスタンスを指す。 function Person(…

オブジェクトの変更防止

オブジェクトも内部属性を持っている。 その一つが、[[Extensible]]。 これはオブジェクトが拡張可能かどうかを示し、これを使うことで、プロパティの追加や変更を制御できる。 Extensible [[Extensible]]はデフォルトではtrueになっている。 この状態だと自…

プロパティの内部属性

JavaScriptには様々な内部属性があり、それは二重ブラケット([[]])に囲まれて表現される。 プロパティも、いくつかの内部属性を持っている。 Object.getOwnPropertyDescriptor()とプロパティディスクリプタ まずは、内部属性にアクセスする方法について。 …

mochaとchaiの最も基本的な使い方

以前、テストについて調べていて、mochaというのものが広く使われていることを知った。 だがその時はNode.jsに触ったことがなく、コマンドラインにも強い苦手意識があったので、導入できなかった。 結局QUnitを使ってみることになり、それに対して強い不満が…

プロパティの操作,確認,列挙

プロパティ操作の基本 オブジェクトのプロパティは原則的に、いつでもその内容を変更できる。 後から新しいプロパティを追加したり、既存のプロパティを削除することも出来る。 var person = { name: 'Tom' }; person.age = 30; // プロパティを追加 console…

アクセサプロパティ(getterとsetter)

アクセサプロパティの基本 プロパティには、データプロパティとアクセサプロパティの2種類がある。 必ずどちらかに分類でき、両方の性質を兼ね備えることは出来ない。 データプロパティには値が格納される。 アクセサプロパティは、値は持たず、getterやsett…