1、OOP 指什么洁奈?有哪些特性
- OOP即 Object Oriented Programming,面向?qū)ο蟮某绦蛟O(shè)計,OOP 達到了軟件工程的三個主要目標(biāo):重用性、靈活性和擴展性仅孩。為了實現(xiàn)整體運算,每個對象都能夠接收信息印蓖、處理數(shù)據(jù)和向其它對象發(fā)送信息辽慕。
- 主要的特性,有三個赦肃,分別是 封裝溅蛉、多態(tài)、 繼承
- 封裝 - 也叫做信息封裝:確保組件不會以不可預(yù)期的方式改變其它組件的內(nèi)部狀態(tài)他宛;只有在那些提供了內(nèi)部狀態(tài)改變方法的組件中温艇,才可以訪問其內(nèi)部狀態(tài)。每類組件都提供了一個與其它組件聯(lián)系的接口堕汞,并規(guī)定了其它組件進行調(diào)用的方法勺爱。
- 多態(tài)性 - 組件的引用和類集會涉及到其它許多不同類型的組件,而且引用組件所產(chǎn)生的結(jié)果依據(jù)實際調(diào)用的類型讯检。
- 繼承性 - 允許在現(xiàn)存的組件基礎(chǔ)上創(chuàng)建子類組件琐鲁,這統(tǒng)一并增強了多態(tài)性和封裝性。典型地來說就是用類來對組件進行分組人灼,而且還可以定義新類為現(xiàn)存的類的擴展围段,這樣就可以將類組織成樹形或網(wǎng)狀結(jié)構(gòu),這體現(xiàn)了動作的通用性投放。
2奈泪、如何通過構(gòu)造函數(shù)的方式創(chuàng)建一個擁有屬性和方法的對象?
function People (name){
this.name = name;
this.sayName = function(){
console.log('my name is:' + this.name);
}
}
People.prototype.walk = function(){
console.log(this.name + ' is walking');
}
var p1 = new People('饑人谷');
p1;
p1.walk();
3、prototype 是什么灸芳?有什么特性
- 每一個構(gòu)造函數(shù)都有個prototype屬性涝桅,它指向一個對象,這個對象就是構(gòu)造函數(shù)new出的對象的原型對象烙样。
- 使用new和構(gòu)造函數(shù)創(chuàng)造對象時冯遂,會自動做四步工作,創(chuàng)建一個空對象{}并且this指向這個空對象谒获,讓這個空對象的proto指向構(gòu)造函數(shù)的prototype屬性蛤肌,運行構(gòu)造函數(shù)來給對象添加屬性和方法壁却,返回this。
4裸准、畫出如下代碼的原型圖
function People (name){
this.name = name;
this.sayName = function(){
console.log('my name is:' + this.name);
}
}
People.prototype.walk = function(){
console.log(this.name + ' is walking');
}
var p1 = new People('饑人谷');
var p2 = new People('前端');
Paste_Image.png
5展东、創(chuàng)建一個 Car 對象,擁有屬性name炒俱、color琅锻、status;擁有方法run向胡,stop恼蓬,getStatus
function Car(name,color,status){
this.name = name
this.color = color
this.status = status
}
Car.prototype = {
run: function(){
console.log('1')
},
stop: function(){
console.log('2')
},
getStatus: function(){
console.log('3')
}
}
var car = new Car('Benz','black',0)
car.run()
car.stop()
car.getStatus()
console.dir(car)
6、創(chuàng)建一個 GoTop 對象僵芹,當(dāng) new 一個 GotTop 對象則會在頁面上創(chuàng)建一個回到頂部的元素处硬,點擊頁面滾動到頂部。擁有以下屬性和方法
1. `ct`屬性拇派,GoTop 對應(yīng)的 DOM 元素的容器
2. `target`屬性荷辕, GoTop 對應(yīng)的 DOM 元素
3. `bindEvent` 方法, 用于綁定事件
4 `createNode` 方法件豌, 用于在容器內(nèi)創(chuàng)建節(jié)點