1: OOP 指什么媚赖?有哪些特性
OOP 即Object-oriented programming的縮寫:意為面向?qū)ο蟪绦蛟O(shè)計(jì)闹究,是一種計(jì)算機(jī)編程架構(gòu)幔崖。
OOP的關(guān)鍵特性:
- 第一個(gè)關(guān)鍵特性是定義了類,封裝了表現(xiàn)和操作的抽象數(shù)據(jù)類型渣淤。
- 第二個(gè)關(guān)鍵特性是繼承赏寇,從已存在的類型中繼承元素(表現(xiàn)和方法),改變或擴(kuò)展舊類型的方法价认。
- 第三個(gè)關(guān)鍵技術(shù)被稱為多態(tài)性嗅定,它允許使用類似的方法操作不同類型的對象(通常是子類對象)。它使得類的可用性進(jìn)一步提高用踩,程序也因此更容易維護(hù)和擴(kuò)展渠退。
2: 如何通過構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)擁有屬性和方法的對象?
function Box(name, age) { //構(gòu)造函數(shù)模式
this.name = name;
this.age = age;
this.run = function() {
return this.name + this.age;
};
}
var box1 = new Box('Lee', 100); //new Box() 即可
var box2 = new Box('Jack', 200);
構(gòu)造函數(shù)的方法有一些規(guī)范:
1)函數(shù)名和實(shí)例化構(gòu)造名相同且大寫,(PS:非強(qiáng)制脐彩,但這么寫有助于區(qū)分構(gòu)造函數(shù)和
普通函數(shù))碎乃;
2)通過構(gòu)造函數(shù)創(chuàng)建對象,必須使用new 運(yùn)算符惠奸。
構(gòu)造函數(shù)可以創(chuàng)建對象執(zhí)行的過程:
1)當(dāng)使用了構(gòu)造函數(shù)梅誓,并且new 構(gòu)造函數(shù)(),那么就后臺(tái)執(zhí)行了new Object()佛南;
2)將構(gòu)造函數(shù)的作用域給新對象梗掰,(即new Object()創(chuàng)建出的對象),而函數(shù)體內(nèi)的this 就
代表new Object()出來的對象嗅回。
3)執(zhí)行構(gòu)造函數(shù)內(nèi)的代碼及穗;
4)返回新對象(后臺(tái)直接返回)。
1.構(gòu)造函數(shù)和普通函數(shù)的唯一區(qū)別妈拌,就是他們調(diào)用的方式不同拥坛。只不過,構(gòu)造函數(shù)也是函數(shù)尘分,必須用new 運(yùn)算符來調(diào)用猜惋,否則就是普通函數(shù)。
2.this就是代表當(dāng)前作用域?qū)ο蟮囊门喑睢H绻谌址秶鷗his 就代表window 對象著摔,如果在構(gòu)造函數(shù)體內(nèi),就代表當(dāng)前的構(gòu)造函數(shù)所聲明的對象定续。
3: prototype 是什么谍咆?有什么特性
prototype
prototype是函數(shù)對象上面預(yù)設(shè)的對象屬性
- JS中所有的東西都是對象,每個(gè)對象都有prototype這個(gè)屬性禾锤,這個(gè)屬性是一個(gè)對象(object)
- JS中所有的東西都由Object衍生而來, 即所有東西原型鏈的終點(diǎn)指向Object.prototype
- JS中構(gòu)造函數(shù)和實(shí)例(對象)之間的關(guān)系,構(gòu)造函數(shù)通過定義prototype來約定其實(shí)例的規(guī)格, 再通過 new 來構(gòu)造出實(shí)例, 他們的作用就是生產(chǎn)對象摹察。而構(gòu)造函數(shù)(方法)本身又是方法(Function)的實(shí)例, 因此也可以查到它的proto(原型鏈)
特性
給prototype 增加或者減少屬性恩掷,將改變這個(gè)類型的原型,這種改變將直接作用到由這個(gè)原型創(chuàng)建的所有對象上
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('前端');
5: 創(chuàng)建一個(gè) 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(this.name + 'is running')
}
Car.prototype.stop = function(){
console.log(this.name + 'stoped')
}
Car.prototype.getStatus = function(){
console.log('status:' + this.status)
}
6: 創(chuàng)建一個(gè) GoTop 對象劝赔,當(dāng) new 一個(gè) GotTop 對象則會(huì)在頁面上創(chuàng)建一個(gè)回到頂部的元素誓焦,點(diǎn)擊頁面滾動(dòng)到頂部。擁有以下屬性和方法
1. `ct`屬性着帽,GoTop 對應(yīng)的 DOM 元素的容器
2. `target`屬性杂伟, GoTop 對應(yīng)的 DOM 元素
3. `bindEvent` 方法, 用于綁定事件
4 `createNode` 方法启摄, 用于在容器內(nèi)創(chuàng)建節(jié)點(diǎn)