物件導向的本質是對面向過程的封裝
物件導向三大特徵:封裝、繼承、多型將某個具體功能封裝在物件中,對外部暴露指定的介面,外界使用時無需考慮內部是如何實現的
function
person
(name,age,country)
var person1 =
newperson
('lin'
,'30'
,'china');
console.
log(person1.name)
;//lin
乙個物件可以擁有其他物件的屬性和方法,通過混入+替換原型的方式繼承
例1
var car =
car.energy =
'gasoline'
;function
audi()
;for
(var key in car)
var audi =
newaudi()
;console.
log(audi.tyre)
;//4
console.
log(audi.energy)
;//gasoline
例2
function
car(
)car.prototype.energy =
'gasoline'
;function
audi()
;audi.prototype =
newcar()
;audi.prototype.constructor = car;
var audi =
newaudi()
;console.
log(audi.tyre)
;//4
console.
log(audi.energy)
;//gasoline
乙個物件在不同情況下的多種狀態
vara=
}varb=
}varc=
}function
go(fn)}go
(a);
//start ago(
b);//start bgo(
c);//start c
原型(prototype)
每個建構函式在建立時都會生成與之對應的原型物件。由該建構函式例項化的物件可以訪問這個原型中的屬性與方法。
//名為human的建構函式
function
human()
//建構函式原型中新增乙個屬性
human.prototype.essence =
'repeater'
;var somebody =
newhuman()
;console.
log(somebody.essence)
;
__proto__
是例項化物件訪問原型的方法,該方法不是w3c標準屬性所以一般不使用__proto__來訪問原型
原型鏈因為原型物件本身也是物件,所以原型也有它的原型,這樣乙個鏈式結構稱為【原型鏈】。內建物件(array、date、string…)的原型都指向object.prototype,建構函式是object。
constructor
屬於原型物件,指向這個原型對應的建構函式,可以得知某個例項物件到底是由哪個建構函式生成的。
var somebody =
newhuman()
;console.
log(somebody.constructor)
;
instanceof運算子
檢測建構函式的原型prototype在不在這個物件的原型鏈上(驗證乙個物件是不是指定的建構函式的例項)。
只能檢測物件,所以檢測基本資料型別(string,number等)無效
functionfn(
)};var arr =
;var fn1 =
newfn()
;console.
log(arr instanceof
array);
//true
console.
log(fn1.jump instanceof
function);
//true
console.
log(fn1 instanceoffn)
;//true
(part 3) 物件導向程式設計的幾個難點(一)。
很多人都會說 建構函式不就是在新建 構造 乙個物件的時候呼叫一下嗎 這有啥可講的 class student int main 樣例,利用建構函式來進行給b賦初值。但是假如有乙個student類n和n1,這個時候你就會發現乙個有趣的事情,如果你要讓n中的資料等於n1,你恐怕要寫很多語句。這時候就是拷...
Gentoo安裝筆記(part3
此安裝筆記是按照gentoo中文手冊上實際操作記下來的,使用的是宿主機ubuntu9.04 virtualbox3.04,在virtualbox3.04中按預設屬性建立了乙個gentoo虛擬機器。使用gentoo minimal映像檔案安裝。6.開始安裝gentoo 1 選擇乙個合適的映象站點 mi...
Python學習筆記 part 3
ide vscode python版本 python3.6 學習教材 python程式設計從入門到實踐 人民郵電出版社 操作列表 for a in b 構建了python的for迴圈,迴圈方式為每次從列表b中取出乙個元素存入a。例如 idiols chen ju liu for idiol in i...