文章配套視頻
JavaScript中常見的對象
- 工廠模式
new Object()
new后面調用函數(shù)它褪,我們稱為構造函數(shù)量承。
Object() 我們把它視為一個構造函數(shù)洽损,構造函數(shù)的本質就是一個函數(shù),
只不過構造函數(shù)的目的是為了創(chuàng)建新對象译株,為新對象進行初始化(設置對象的屬性)
使用工廠方法創(chuàng)建對象
通過該方法可以大批量的創(chuàng)建對象
使用工廠方法創(chuàng)建的對象,使用的構造函數(shù)都是Object
所以創(chuàng)建的對象都是Object這個類型钩述,就導致我們無法區(qū)分出多種不同類型的對象
- 構造函數(shù)
定義
構造函數(shù)就是一個普通的函數(shù)彩库,創(chuàng)建方式和普通函數(shù)沒有區(qū)別, 不同的是構造函數(shù)習慣上首字母大寫
構造函數(shù)和普通函數(shù)的區(qū)別就是調用方式的不同,
普通函數(shù)是直接調用槽惫,而構造函數(shù)需要使用new關鍵字來調用
執(zhí)行流程
1. 立刻創(chuàng)建一個新的對象
2. 將新建的對象設置為函數(shù)中this, 在構造函數(shù)中可以使用this來引用新建的對象
3. 逐行執(zhí)行函數(shù)中的代碼
4. 將新建的對象作為返回值返回
- this
定義
解析器在調用函數(shù)每次都會向函數(shù)內部傳遞進一個隱含的參數(shù),
這個隱含的參數(shù)就是this周叮,this指向的是一個對象 , 這個對象我們稱為函數(shù)執(zhí)行的上下文對象
根據函數(shù)的調用方式的不同界斜,this會指向不同的對象
1.以函數(shù)的形式調用時仿耽,this永遠都是window
2.以方法的形式調用時,this就是調用方法的那個對象
3.當以構造函數(shù)的形式調用時各薇,this就是新創(chuàng)建的那個對象
誰調用this就是誰
function test() {
console.log(this);
}
test(); //window.test();
//上面的this是window项贺,實際是window調用test()
p1.sayHi();
//sayHi()中的this,是p1峭判,此時是p1調用sayHi()
構造函數(shù)中的this开缎,始終是new的當前對象
- 構造器(constructor) 和 原型屬性 (prototype)
在任何一個對象中都有構造器和原型屬性,包括原生的對象林螃,比如: Date, Array等
constructor 返回創(chuàng)建此對象的構造函數(shù)
prototype 讓我們有能力動態(tài)給對象添加屬性和方法
- 其他語言中面向對象
Java
class Customer {
//屬性
public String Name;
public String Age;
public String Money;
//方法
public void Buy (String id,int num,double price) {
self.money -= num * price;
//記錄訂單
}
}
Customer c1 = new Customer();
//屬性
c1.Name = "張三";
c1.Age = 18;
c1.Money = 1000000;
//方法
c1.Buy("a001",1,500);
- 包裝類
定義
在JS中為我們提供了三個包裝類奕删,通過這三個包裝類可以將基本數(shù)據類型的數(shù)據轉換為對象
String()
可以將基本數(shù)據類型字符串轉換為String對象
Number()
可以將基本數(shù)據類型的數(shù)字轉換為Number對象
Boolean()
可以將基本數(shù)據類型的布爾值轉換為Boolean對象
注意:在實際應用中不會使用基本數(shù)據類型的對象