1. 程式人生 > >第二章 物件高階

第二章 物件高階

一、物件建立模式

1.Object建構函式

 缺點:  
/* 1. 組織形式不好 2. 沒有型別 3. 記憶體開銷大 4. 程式碼冗餘 */ var obj = new Object(); obj.age=18; obj.name="zyy"; obj.say=function () { console.log("城市套路深 我要回農村 農村路更滑 人心更復雜") } var obj2 = new Object(); obj2.age
=19; obj2.name="zyy"; obj2.say=function () { console.log("-----") }

 2.字面量

 

缺點:

/*
  2. 沒有型別
  3. 記憶體開銷大
  4. 程式碼冗餘
*/

改善:

// 1. 組織形式比較友好

 
var obj ={ name:"zyy", age:18, say:function () { console.log(
"----") } } var obj2 ={ name:"zyy2", age:38, say:function () { console.log("*****") } }

 

 3.工廠模式

缺點: 
/* 2. 沒有型別 3. 記憶體開銷大 */ 改善: // 1. 組織形式比較友好 // 4. 程式碼不冗餘 function createObj(name,age,msg) {
return { name:name, age:age, say:function (msg) { console.log(msg) } } } var obj = createObj("damu",18,"胡話"); var obj2 = createObj("zyy",48,"鬼話"); console.log(obj,obj2)

 

 4.自定義建構函式

缺點:
/* 3. 記憶體開銷大 */ 改善: // 1. 組織形式比較友好 // 4. 程式碼不冗餘 // 2. 擁有型別 function Person(name,age) { // var food; this.name =name; this.age =age; this.eat=function (food) { // var food; console.log(food) } } var damu = new Person("達姆",18); damu.eat("核桃"); var fyz = new Person("張豔英",48); fyz.eat("大嘴巴子"); // console.log(damu instanceof Person,fyz);

 

 5.自定義建構函式+原型鏈

 改善:   
//
1. 組織形式比較友好 // 4. 程式碼不冗餘 // 2. 擁有型別 // 3. 記憶體開銷相對減少 Person.prototype.eat=function (food) { console.log(this.name+"吃"+food) } function Person(name,age,food) { this.name =name; this.age =age; } var damu = new Person("達姆",18); damu.eat("核桃"); var fyz = new Person("張豔英",48); fyz.eat("大嘴巴子");