例子 ?: 我要吃麵條
物件導向
物件導向就是對面向過程的封裝
我們以前的程式設計思想是,每乙個功能,都按照需求一步一步的逐步完成
我們以後的程式設計思想是,每乙個功能,都先創造乙個麵館,這個麵館能幫我們作出乙個面(完成這個功能的物件),然後用麵館創造出乙個面,我們只要等到結果就好了
建構函式會比工廠函式簡單一下
先書寫乙個建構函式
在建構函式內向物件新增一些成員
使用這個建構函式創造乙個物件(和 new 連用)
建構函式可以建立物件,並且建立乙個帶有屬性和方法的物件
物件導向就是要想辦法找到乙個有屬性和方法的物件
物件導向就是我們自己製造建構函式的過程
// 1. 先創造乙個建構函式
function
person
(name, gender)
// 2. 使用建構函式建立物件
var p1 =
newperson
('jack'
,'man'
)var p2 =
newperson
('rose'
,'woman'
)
首字母大寫
function
person()
var o1 =
newperson()
// 能得到乙個物件
function
person()
var o2 =
newperson()
// 能得到乙個物件
當呼叫的時候如果不需要傳遞引數可以不寫()
,建議都寫上
function
person()
var o1 =
newperson()
// 能得到乙個空物件
var o2 =
newperson
// 能得到乙個空物件
建構函式內部的 this,由於和 new 連用的關係,是指向當前例項物件的
function
person()
var o1 =
newperson()
// 本次呼叫的時候,this => o1
var o2 =
newperson()
// 本次呼叫的時候,this => o2
因為建構函式會自動返回乙個物件,所以建構函式內部不要寫 return
我們在寫建構函式的時候,是不是也可以新增一些方法進去呢?
function
person()
}var o1 =
newperson()
var o2 =
newperson
()
但是這樣好不好呢?缺點在**?
function
person()
}// 第一次 new 的時候, person 這個函式要執行一遍
// 執行一遍就會創造乙個新的函式,並且把函式位址賦值給 this.sayhi
var o1 =
newperson()
// 第二次 new 的時候, person 這個函式要執行一遍
// 執行一遍就會創造乙個新的函式,並且把函式位址賦值給 this.sayhi
var o2 =
newperson
()
怎麼解決這個問題呢?
function
person()
person.prototype.name =
'prototype'
person.prototype.
sayhi
=function()
我們發現了乙個叫做prototype
的空間是和函式有關聯的
並且可以向裡面儲存一些東西
重點:在函式的 prototype 裡面儲存的內容,不是給函式使用的,是給函式的每乙個例項化物件使用的
那例項化物件怎麼使用能?
那麼這個__proto__
又指向**呢?
function
person()
var p1 =
newperson()
console.
log(p1.__proto__ === person.prototype)
// true
function
person()
person.prototype.
sayhi
=function()
var p1 =
newperson()
p1.sayhi
()
到這裡,當我們例項化多個物件的時候,每個物件裡面都沒有方法
function
person()
person.prototype.
sayhi
=function()
var p1 =
newperson()
var p2 =
newperson()
console.
log(p1.sayhi === p2.sayhi)
結論比如: 函式
// 函式本身也是乙個物件
varfn
=function()
var fun =
newfunction
()
比如: tab選項卡
為何那麼多女人不想嫁人
為何那麼多女人不想嫁人?為何我不願意嫁給你?你叫我給你乙個理由,是的,我有理由。理由是 結了婚,我不再是情人,也不再重要,我只是乙個黃臉婆。我不願意被冷落。理由是 結了婚,我的地位遠遠落後你家的每乙個人,我再也得不到關愛的眼神。理由是 結了婚,所有親友的問候語就會變成 什麼時候生小孩啊?我不要生小孩...
為什麼那麼多「偽需求」?
為什麼有那麼多 偽需求 做產品或做工具,經常碰到 偽需求 的問題,其實業界早有定論,使用者說不清楚自己的需求是什麼?有兩個流行的著名故事,第乙個故事,在汽車出現之前,福特去調研使用者,眾多使用者表示 我們需要一輛更快的馬車 第二個故事,大學城邊酒店林立,競爭激烈,其中一家的酒店老闆開始使用者調研,每...
為什麼華為加班那麼多
為什麼華為加班那麼多?十年前,pc機 個人電腦 的記憶體還是256k,512k為主流,再往前,記憶體就更小了。為了節省空間,編寫的程式都是很精練的。是否還記得有這樣一道演算法題 不用額外的變數,交換兩個變數的值。連乙個臨時變數的空間都節省了。現在的pc機記憶體已是4g,8g為主流了,伺服器的記憶體就...