js 物件導向 建構函式

2021-10-10 22:38:27 字數 3120 閱讀 4969

面向過程的時候我們寫**的方式是獲取元素、定義訊號量、定義鎖都是遇見需求就定義乙個變數

但是 無法復用 並且主要就是定義的 是變數

物件導向就是操作的是物件

把寫**的風格從面向過程改為物件導向 把變數封裝成物件即可

//面向過程

var username =

"王老五"

;var age =13;

var *** =

"男";

console.

log(

+ username +

"我今年"

+ age +

"歲,我是乙個"

+ *** +

"孩子"

)

//物件導向

var obj =

console.

log(

+ obj.username +

"我今年"

+ obj.age +

"歲,我是乙個"

+ obj.*** +

"孩子"

)

工廠模式

如何復用**

function

createpeople()

return obj;

}var o1 =

createperson()

;var o2 =

createperson()

;var o3 =

createperson()

;var o4 =

createperson()

;

// 當然現在還欠缺一點

// 現在所有的人都同乙個屬性對應同乙個屬性值

varcreateperson

=function

(username, age, ***)

}var o1 =

createperson

("張三",13

,"女"

)var o2 =

createperson

("李四",23

,"女"

) console.

log(o1, o2)

;

以上就是物件導向了,其中這個封裝出來的函式的作用是 建立物件 所以這種具備特定功能的函式 我們管他叫做工廠函式

這種書寫**的模式 就叫做工廠模式

工廠具備的特點:產品的結構是一致的 屬性值是不同的

工廠模式的不足
// 建立人的工廠

varcreateperson

=function

(username, age, ***)

}var o1 =

createperson

("張三",13

,"女"

)// 建立學生的工廠

varcreatestudent

=function

(name, age, ***, grade)

}var s1 =

createstudent

("小華",6

,"男",1

);

兩個工廠 生產出來的產品 無法通過**來識別

typeof 與 instanceof
js中型別分為 引用型別和值型別

typeof 可以識別值型別的資料的不同

如何區分引用型別的不同呢?

instanceof關鍵字用於區分引用資料型別的精確型別的

var arr = ;

console.log(arr instanceof array)

var obj = {};

console.log(obj instanceof object)

instanceof的用法 

物件 instanceof 型別

如果返回的是真 說明 前面的物件是後面的型別

如果返回的是假 說明 前面的物件不是後面的型別

所有物件都是object物件的後代,所以任何物件和object做instanceof都會返回true

//補充: 正則的new的用法

var reg =

/abc/g

;var reg1 =

newregexp

("abc"

,"g");

console.

log(reg, reg1)

//如果正則**現特殊字元

var reg2 =

/\w+/g

;var reg3 =

newregexp

("\\w+"

,"g");

console.

log(reg2, reg3)

1、建構函式也是乙個普通函式,建立方式和普通函式一樣,但建構函式習慣上首字母大寫

2、建構函式和普通函式的區別在於:呼叫方式不一樣。作用也不一樣(建構函式用來新建例項物件)

3、呼叫方式不一樣。

a. 普通函式的呼叫方式:直接呼叫 person();

b.建構函式的呼叫方式:需要使用new關鍵字來呼叫 new person();

4、建構函式的函式名與類名相同:person( ) 這個建構函式,person 既是函式名,也是這個物件的類名

5、內部用this 來構造屬性和方法

function

person

(name,job,age)

}

5、建構函式的執行流程

a、立刻在堆記憶體中建立乙個新的物件

b、將新建的物件設定為函式中的this

c、逐個執行函式中的**

d、將新建的物件作為返回值

6、普通函式例子:因為沒有返回值,所以為undefined

7、建構函式例子:建構函式會馬上建立乙個新物件,並將該新物件作為返回值返回

JS物件導向 建構函式 繼承

繼承 子類繼承父類的屬性和方法 好處 減少 量,公共的父類可以復用.降低耦合度.js裡實現繼承的方法 1.通過改變構造建構函式中物件的指向實現繼承 2.通過原型鏈實現繼承.function animal function cat var cat new cat new出乙個例項改變呼叫物件的方法 1...

Js物件導向建構函式繼承

建構函式繼承 function animal function dog name,color 如果 狗 的prototype物件,指向乙個animal的例項,那麼所有 狗 的例項,就能繼承animal了。dog.prototype new animal dog.prototype.construct...

js物件導向程式設計之建構函式

工廠模式是乙個比較廣為人知的模式,這種模式將細節抽象出來。如下 function createperson name,age,job returno var person1 createperson ds 12,dada var person2 createperson ds2 122,dada2 ...