1. OOP 指什么赫编?有哪些特性
OOP指的是面向?qū)ο缶幊?/p>
三大特性:封裝蛤奢、繼承、多態(tài)
1.封裝
封裝指的是將方法和屬性保存起來(lái)饵骨,防止外界直接調(diào)用的一種手段;若要訪問(wèn)屬性和方法茫打,必須先聲明一個(gè)類的實(shí)例居触,通過(guò)這個(gè)實(shí)例的接口去訪問(wèn)屬性和調(diào)用方法
2.繼承
A對(duì)象有一些屬性和方法,B對(duì)象有一些屬性和方法老赤;若A對(duì)象繼承自B對(duì)象轮洋,A對(duì)象可以訪問(wèn)B對(duì)象的屬性和方法
3.多態(tài)
當(dāng)兩個(gè)對(duì)象繼承自同一個(gè)類時(shí),每個(gè)對(duì)象對(duì)父類的某一方法或者屬性重寫(xiě)后的不同表現(xiàn)形式就是多態(tài)抬旺;
例子:雞類和狗類都繼承自動(dòng)物類弊予;動(dòng)物類有say()方法,雞類和狗類繼承后分別重寫(xiě)為function say(){console.log('雞叫')}和function say(){console.log('狗叫')}
2. 如何通過(guò)構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)擁有屬性和方法的對(duì)象?
//構(gòu)造函數(shù)第一個(gè)字母大寫(xiě)
var Human = function () { this.name = 'human' }
Human.prototype.eat = function () { console.log('吃飯') }
var man = new Human;
console.dir(man)
3. prototype 是什么开财?有什么特性
每一個(gè)函數(shù)在創(chuàng)建之后都會(huì)擁有 prototype 的屬性汉柒,這個(gè)屬性指向函數(shù)的原型對(duì)象
原型對(duì)象可視為公共區(qū)域,默認(rèn)含有 constructor责鳍、 proto 這兩個(gè)屬性
使用原型對(duì)象的好處是可以讓所有對(duì)象實(shí)例共享它所包含的屬性和方法碾褂,通常我們可以將實(shí)例對(duì)象的公共屬性和方法放在 prototype 對(duì)象中特性:
用來(lái)實(shí)現(xiàn)基于原型的繼承與屬性的共享
所有對(duì)象都有 proto,指向其構(gòu)造函數(shù)的prototype
obj.proto === Object.prototype //true
構(gòu)成原型鏈历葛,同樣用于實(shí)現(xiàn)基于原型的繼承正塌,例:訪問(wèn)一個(gè)對(duì)象的屬性時(shí),如果在obj中找不到,那么就會(huì)沿著proto依次查找乓诽,直到找到這個(gè)屬性或null
4.畫(huà)出如下代碼的原型圖
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('前端');
5. 創(chuàng)建一個(gè) Car 對(duì)象帜羊,擁有屬性name、color鸠天、status讼育;擁有方法run,stop粮宛,getStatus
//創(chuàng)建一個(gè) Car 對(duì)象窥淆,擁有屬性name、color巍杈、status忧饭;擁有方法run,stop筷畦,getStatus
var Car = function (name, color, status) {
this.name = name
this.color = color
this.status = status
}
Car.prototype.run = function () {
console.log('----->run')
}
Car.prototype.stop = function () {
console.log('----->stop')
}
Car.prototype.getStatus = function () {
console.log('----->getStatus:'+this.status)
}
var car = new Car('哈哈','pink',true);
car.run();//----->run
car.stop();
car.getStatus();
6. 創(chuàng)建一個(gè) GoTop 對(duì)象词裤,當(dāng) new 一個(gè) GotTop 對(duì)象則會(huì)在頁(yè)面上創(chuàng)建一個(gè)回到頂部的元素,點(diǎn)擊頁(yè)面滾動(dòng)到頂部鳖宾。擁有以下屬性和方法
-
ct
屬性吼砂,GoTop 對(duì)應(yīng)的 DOM 元素的容器 -
target
屬性, GoTop 對(duì)應(yīng)的 DOM 元素 -
bindEvent
方法鼎文, 用于綁定事件
4createNode
方法渔肩, 用于在容器內(nèi)創(chuàng)建節(jié)點(diǎn)