關於JS的物件導向的思考和總結

2021-09-13 13:11:09 字數 1754 閱讀 9999

1、物件導向程式設計是什麼

它是用抽象的方式建立基於現實世界模型的程式設計模式(將資料和程式指令組合到物件中)
2、物件導向程式設計的目的
在程式設計中促進更好的靈活性和可維護性,在大型軟體工程中廣為流行。
3、物件導向程式設計的優勢(繼承、多型、封裝)
繼承:獲取父類的全部(資料和功能),實現的是複製。

多型:根據實現方法的物件,相同方法名具有不同的行為。

封裝:聚合物件資料和功能,以及限制它們和外界的聯絡(訪問許可權)。

1、原型鏈式繼承
function person() 

}person.prototype.getname = function()

person.prototype.setname = function(name)

function student()

student.prototype = new person()

const stu1 = new student()

const stu2 = new student()

stu1.setname('stu')

stu1.getname()

stu2.getname()

缺點:

引用型別被修改時會同步給所有子類

2、建構函式繼承
function person() 

this.setname = name =>

this.getname = () =>

}function student()

const stu1 = new student()

const stu2 = new student()

stu1.setname('stu')

stu1.getname()

stu2.getname()

缺點:父類的函式在子類下面是不共享的,相當於動態的複製了乙份**
3、組合繼承
function person() 

}person.prototype.getname = function()

person.prototype.setname = function(name)

function student()

// 繼承方法

student.prototype = new person()

缺點:父類內的屬性複製執行了兩遍
4、寄生組合式繼承
function person() 

}person.prototype.getname = function()

person.prototype.setname = function(name)

function student()

// 這裡實現方法的繼承

function inherit(sub, parent)

inherit(student, person)

這裡解決了組合式繼承的父類**二次執行問題
5、class實現繼承(參考)
class person 

}get name()

set name(name)

}class student extends person

}

JS 物件導向 總結

建立物件 1.工廠模式 function createperson name,age,job var o new object o.name name o.age age o.job job o.sayname function alert this.name return o var person...

關於物件導向體系的總結

js物件體系總結 1.所有的函式都有都有 proto 和prototype,2.prototype屬性本質上也是物件,原型物件中也有乙個 proto 屬性,並且指向object.prototype,但是object.prototype中沒有這個屬性。3.原型物件中都有乙個construction 構...

關於物件導向的一些思考

物件導向方法被人談論了二十多年了。我接觸它比較晚,直到九十年代中期才開始學習使用它。若說對這個方法做些評價,那還真是大言不慚了。不過這麼些年來,也週期性的對物件導向做些思考。或對或錯,我想都值得總結一下。一家之言,來看的同學不必太當真。首先我們要區分一下 基於物件 和 物件導向 的區別。基於物件,通...