生活随笔
收集整理的這篇文章主要介紹了
前端基础知识3
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
對象的創(chuàng)建模式大概有這幾種:
- Object構(gòu)造函數(shù)模式
- 對象字面量
- 工廠模式
- 自定義構(gòu)造函數(shù)模式
- 構(gòu)造函數(shù)+原型的組合模式
Object構(gòu)造函數(shù)模式
Object構(gòu)造函數(shù)模式
- 套路: 先創(chuàng)建空Object對象, 再動態(tài)添加屬性/方法
- 適用場景: 起始時不確定對象內(nèi)部數(shù)據(jù)
- 問題: 語句太多
<script type
="text/javascript">var p
= new Object()p
= {} p
.name
= 'Tom'p
.age
= 12p
.setName = function (name
) {this.name
= name
}console
.log(p
.name
, p
.age
)p
.setName('Bob')console
.log(p
.name
, p
.age
)</script
>
對象字面量模式
- 套路: 使用{}創(chuàng)建對象, 同時指定屬性/方法
- 適用場景: 起始時對象內(nèi)部數(shù)據(jù)是確定的
- 問題: 如果創(chuàng)建多個對象, 有重復(fù)代碼
<script type
="text/javascript">var p
= {name
: 'Tom',age
: 12,setName
: function (name
) {this.name
= name
}}console
.log(p
.name
, p
.age
)p
.setName('JACK')console
.log(p
.name
, p
.age
)var p2
= { name
: 'Bob',age
: 13,setName
: function (name
) {this.name
= name
}}</script
>
工廠模式
- 套路: 通過工廠函數(shù)動態(tài)創(chuàng)建對象并返回
- 適用場景: 需要創(chuàng)建多個對象
- 問題: 對象沒有一個具體的類型, 都是Object類型
<script type
="text/javascript">function createPerson(name
, age
) { var obj
= {name
: name
,age
: age
,setName
: function (name
) {this.name
= name
}}return obj
}var p1
= createPerson('Tom', 12)var p2
= createPerson('Bob', 13)function createStudent(name
, price
) {var obj
= {name
: name
,price
: price
}return obj
}var s
= createStudent('張三', 12000)</script
>
自定義構(gòu)造函數(shù)模式
- 套路: 自定義構(gòu)造函數(shù), 通過new創(chuàng)建對象
- 適用場景: 需要創(chuàng)建多個類型確定的對象
- 問題: 每個對象都有相同的數(shù)據(jù), 浪費內(nèi)存
<script type
="text/javascript">function Person(name
, age
) {this.name
= name
this.age
= age
this.setName = function (name
) {this.name
= name
}}var p1
= new Person('Tom', 12)p1
.setName('Jack')console
.log(p1
.name
, p1
.age
)console
.log(p1
instanceof Person)function Student (name
, price
) {this.name
= name
this.price
= price
}var s
= new Student('Bob', 13000)console
.log(s
instanceof Student)var p2
= new Person('JACK', 23)console
.log(p1
, p2
)</script
>
構(gòu)造函數(shù)+原型的組合模式
- 套路: 自定義構(gòu)造函數(shù), 屬性在函數(shù)中初始化, 方法添加到原型上
- 適用場景: 需要創(chuàng)建多個類型確定的對象
<script type
="text/javascript">function Person(name
, age
) { this.name
= name
this.age
= age
}Person
.prototype
.setName = function (name
) {this.name
= name
}var p1
= new Person('Tom', 23)var p2
= new Person('Jack', 24)console
.log(p1
, p2
)</script
>
總結(jié)
以上是生活随笔為你收集整理的前端基础知识3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。