第二章 物件高階
阿新 • • 發佈:2018-12-21
一、物件建立模式
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("大嘴巴子");