js的面對物件,繼承

2021-09-19 23:57:17 字數 1879 閱讀 6855

js是乙個基於物件的語言,在es6之前,js是使用了建構函式來模擬類,使得js也可以面對物件來程式設計,es6中加入了類的定義

通過字面量的方式建立

let obj=

//例項化物件建立物件

let person =

newobject()

person.name =

"小明"

person.age =

"12"

工廠模式建立物件

function

createobject

(name,age)

}

建構函式方式建立

function

person

(name,age)

}

1.inname in person

2.hasownproperty方法person.hasownproperty("name")

區別:in檢查物件中是否有該屬性,特點是通過繼承的屬性他也會檢查到是屬於當前物件的

hasownproperty通過繼承的屬性返回false,自身擁有的屬性才返回true

刪除屬性delete

delete person.name

實現繼承的目的:

實現資料共享,節省記憶體空間

當我們通過乙個類建立了50個物件,然後我們如何給它新增新方法呢,給建構函式的原型物件prototype新增方法即可,那這50個物件都會擁有這個方法

子類如何繼承父類

//父類

functon human

(name)

//子類

function

man(name,job)

2.使用prototype

//父類

function

human

(name)

human.prototype.

work

=function()

//子類

function

man(name,job)

man.prototype = human.prototype

let man=

newman

("小白"

,"老師"

)man.

work()

//eat

js中實現繼承是靠prototype這個屬性,建構函式都有乙個原型物件prototype,原型物件中有乙個構造器constructor它指向了建構函式,通過這個建構函式例項化的物件中都有乙個proto屬性它指向了原型物件

es6定義類的方式

es6實現繼承:class 可以通過extends關鍵字實現繼承,這比 es5 的通過修改原型鏈實現繼承,要清晰和方便很多。

class

person

eat(

)play()

}//繼承extends

class

manextends

person

eat()}

let a =

newman

("小公尺",10

,"laos")a.

eat(

)

python 面對物件 繼承

私有屬性和方法通過在屬性和方法名前新增 得到。私有屬性和方法是物件的隱私,不能通過外界和子類直接訪問 在外界無法訪問到私有屬性和方法 不能直接print列印 可以通過在物件的方法內部訪問私有屬性 子類物件可以通過父類的公有方法間接訪問到私有屬性或私有方法 eg classa def init sel...

c 面對物件繼承

可以認為類是屬於命名空間的 如果在當前專案中沒有這個類的命名空間,我們需要手動匯入這個類所在的命名空間 alt shift f10 快捷鍵 在乙個專案中引用另乙個專案的類 1.新增引用 2.引用命名空間 區別 1.值型別和引用型別在記憶體上儲存的地方不一樣。2.在傳遞值型別和傳遞引用型別的時候,傳遞...

面對物件繼承之組合繼承

組合繼承 1.所有不需要共享的例項屬性使用call來繼承 2.所有需要共享的屬性通過原型鏈繼承 把兩者結合到一起成為組合繼承 優點 既可以讓共享的屬性只保留乙份,又可以讓不需要共享的屬性每個物件都有 function animal animal的原型屬性 animal.prototype.shake...