JavaScript――作成対象の5つの方法分析(工場モデル原型構造関数)
4794 ワード
まずJavaScriptの中の方法を明確にします.3種類の方法、オブジェクト方法、プロトタイプ方法、作成対象の鍵は定義方法JavaScriptの中の関数です.関数名はオブジェクト参照です.
既存のオブジェクトに基づいて属性と方法を拡張します.
JavaScriptの各オブジェクトにはプロトタイプの属性があり、プロトタイプの属性はオブジェクトタイプの原型の参照に戻ります.
コンストラクタでは、マーカーの量によって、すべてのオブジェクトに一つの方法を共有させます.各オブジェクトは自分の属性を持っています.
既存のオブジェクトに基づいて属性と方法を拡張します.
var object = new Object();
object.name = " ";//
alert(object.name);
/ ,
object.sayHello = function(name)
{
this.name = name;
alert(this.name);
}
object.sayHello(" ");
設計モードにおける工場方式を利用する //
/* function CreatObject()
{
var object = new Object();
object.name = "zhangsan";
object.age = 20;
object.get = function()
{
alert( this.name + ":" + this.age);
}
return object;
}
var object1 = new CreatObject();
object1.get();
*/
//
/* function CreatObject(name, age)
{
var object = new Object();
object.name = name;
object.age = age;
object.get = function()
{
alert(this.name + ":" + this.age)
}
return object;
}
var object2 = new CreatObject("zhangsan", 20);
object2.get();*/
// , ,
// ,
//
function CreatObject(name, age)
{
var object = new Object();
object.name = name;
object.age = age;
//
//
object.get = get;
return object;
}
// :
function get()
{
alert(this.name + ":" + this.age)
}
var object = new CreatObject(" ", "10");
object.get();
コンストラクタ方式
/* function CreatObject()
{
// ,js
this.name = " ";
this.age = 20;
this.get = function()
{
alert(this.name + ": " + this.age);
}
// return ,
}
var object = new CreatObject();
object.get();*/
//
function CreatObject(name, age)
{
this.name = name;
this.age = age;
this.get = function()
{
alert(this.name + ": " + this.age);
}
}
var object = new CreatObject(" ", 30);
object.get();
プロトタイプ方式JavaScriptの各オブジェクトにはプロトタイプの属性があり、プロトタイプの属性はオブジェクトタイプの原型の参照に戻ります.
//
/* function Person()
{
}
Person.prototype.name = " ";
Person.prototype.age = 20;
Person.prototype.get = function()
{
alert(this.name + ": " + this.age);
}
var person = new Person();
person.name = " ";
person.get();*/
function Person()
{
}
Person.prototype.name = new Array();
Person.prototype.age = 20;
Person.prototype.get = function()
{
alert(this.name + ": " + this.age);
}
var object = new Person();
var object2 = new Person();
object.name.push(" ");
object2.name.push(" ");
// , ,
//
object.get();
object2.get();
プロトタイプ+構造関数方式// ,
// 。 + ,
// ,
function Person()
{//
this.name = new Array();
this.age = 20;
}
Person.prototype.get = function()
{
alert(this.name + ": " + this.age);
}
var object = new Person();
var object2 = new Person();
object.name.push(" ");
object2.name.push(" ");
object.age = 30;
object.get();// :30
object2.get();// :20
ダイナミックプロトタイプ方式:コンストラクタでは、マーカーの量によって、すべてのオブジェクトに一つの方法を共有させます.各オブジェクトは自分の属性を持っています.
function Person(name, age)
{
this.name = name;
this.age = age;
//
if (typeof Person.flag == "undefined")
{
alert(" ");
Person.prototype.get = function()
{
alert(this.name + ": " + this.age);
}
Person.flag = true;
}
}
var object = new Person(" ", 20);
var object2 = new Person(" ", 30);
object.get();
object2.get();