オブジェクトの実例化とオブジェクトへの追加方法

1687 ワード

最近は学習対象、方法、実用化方法について、以下のようにまとめて初心者に役立てたいと思います.
オブジェクト指向プログラミングでは、クラスはオブジェクトのテンプレートであり、同じグループのオブジェクト(「インスタンス」ともいう)の共通の属性と方法を定義しています.Javascript言語は「クラス」をサポートしていませんが、構造関数の方法で「クラス」をシミュレートできます.構造関数を使って「クラス」をシミュレートし、その内部ではthisキーワードでインスタンスオブジェクトを指します.

function People() {
    this.name = "ZhangSan";
}
インスタンスを生成するときは、newキーワードを使用します.

var ZhangSan = new People();
alert(ZhangSan.name);  //ZhangSan
クラスの属性と方法は、構造関数のプロトタイプオブジェクトの上にも定義できます.

People.prototype.sayHello = function(){
    alert("Hello!");
}
関数を定義しながら関数のいくつかの属性を定義することもできます.
function People(name,sex,age){this.name = name;this.sex = sex;this.age = age}
実用化方法:
var ZhangSan = new People('ZhangSan','boy',22)
ZhangSan;  //People{name:'ZhangSan',sex:'boy',age:22}
ZhangSan.name;  //ZhangSan
プロトタイプを使用してオブジェクトに方法を追加することもできます.
People.prototype.sayHello = function(){alert('Hello!')};
ZhangSan.sayHello();   //  Hello!
People.sayHello();  //    :TypeError: Object function People(name, sex, age){this.name = name;this.sex = sex; this.age = age;} has no method 'sayHello'   sayHello             ,         
もしpeopleにメソッドを追加する必要があるなら、実行:
People.changeKind = function(new_Kind){alert('   ')}
People.changeKind();   //  “   ”
ZhangSan.changeKind();  //  :TypeError: Object #<People> has no method 'changeKind',      changeKind  。