工廠模式
function createperson(name,age);
return o; }
createperson('小明','18');
建構函式模式
funciton person=('name','age')
function say()
var person1=person('小明','18');
建構函式的呼叫方式,需要建立 person 物件的新例項,必須使用 new 操作符。
在這裡,每個新例項都只會呼叫同乙個 say( ) 方法,避免導致不同例項上的同名函式都是不相等。
在**讀取每個物件的屬性的時候,會執行兩次搜尋,第一次是在例項中找,找到即返回,第二次是在原型物件中找,找到即返回。
原型模式
function preson()
person.prototype.name='xiaoming';
person.prototype.age=18;
person.prototype.say=function()
var person1=new person();
我們每建立乙個函式都會有乙個 prototype 屬性,這個屬性是乙個指標,指向這個函式的原型物件。
原型物件裡會有乙個 constructor 屬性,這個屬性也是乙個指標,指向的建構函式。
使用 new 字串之後,會把這個建構函式和屬性方法及原型物件的屬性方法給到例項化出來的新物件。
例項出來的新物件,有個 [[prototype]] 屬性(__proto__),這個屬性也是乙個指標,指向原型物件。
組合使用建構函式模式和原型模式
function person(name,gae)
person.prototype= }
var person1=new person('xiaoming','18');
建構函式用於定義例項屬性,原型模式用於定義方法和共享的屬性,每個例項物件都會有自己的乙份例項屬性,同時共享著對方法的引用,最大限度節省了記憶體。
這個例子中,為了避免重複新增 prototype,這裡將 person.prototype 設定為乙個以物件字面量的形式建立的物件,但同時要更改這個物件 constructor 屬性,將它的指標指向 person 建構函式,因為在這裡本質上是重寫預設的 prototype 物件,因此 constructor 屬性也成了新的物件的屬性(指向 objcet 建構函式)。
原型模式 建立物件
原型模式 操作 先建立好乙個原型物件,然後通過clone 原型物件來建立新的物件。這就免去了類建立時重複的初始化操作。原型模式適用於大物件的建立。如果每次new 就會消耗很大,原型模式僅需要記憶體拷貝即可。index.php 中 prototype new imooc canvas prototyp...
建立物件之原型模式
1,原型模式建立物件 原型也是乙個物件。我們建立的函式都有乙個prototype屬性,這個屬性指向乙個物件,這個物件包含有特定函式建立的例項共享的屬性和方法。使用原型物件可以使所有的例項共享屬性和方法,而不必再建構函式中初始化屬性和方法。function person person.prototyp...
js建立物件 原型模式
原型模式是用來建立物件的,它是在建構函式建立物件基礎上,為了實現資料的共享,這種共享包括屬性的共享,也包括方法的共享。既然原型模式是在建構函式模式的基礎上改進的,那麼這種模式會既有建構函式的特點又有原型模式的特點。關於原型模式的使用方法用一句話總結 不需要共享的資料寫在建構函式中,需要共享的資料寫在...