問答
1. OOP 指什么?有哪些特性 (難度: ***
)
定義:OOP全稱Object Oriented Programming,即面向對象編程,是一種計算機編程架構。
特性:
- 封裝:將代碼封裝為一個整體,擁有自己獨立的特性,像外界提供調用的接口,隱藏內部具體的實現細節。
- 繼承:子類自動繼承其父級類中的屬性和方法,并可以添加新的屬性和方法或者對部分屬性和方法進行重寫。繼承增加了代碼的可重用性。
- 多態:在繼承的基礎上實現,父類引用指向子類對象,多個子類可以使用同一方法而互不影響,以此獲得不同的結果。
2. 如何通過構造函數的方式創建一個擁有屬性和方法的對象? (難度: ***
)
當new一個函數的時候,這個函數就會作為構造函數創建一個對象。函數里面的this指向創建的這個對象,給this創建屬性和方法,就是給這個對象創建屬性和方法。
<pre>function People(name){ this.name=name; this.sayName=function(){ console.log(this.name) ; } } var p1=new People('Penny');
</pre>
3. prototype 是什么?有什么特性 (難度: ***)
任何一個函數都具有prototype屬性,這個屬性是一個指針,指向一個對象,即原型對象,當由一個構造函數生成一個對象時,這個對象的__proto__
屬性指向該對象的原型對象(構造函數prototype屬性指向的對象),即指向空間中同一塊存放區域。當函數的prototype屬性修改時,所有此函數生成的對象的__proto__
屬性由于指向這個對象,也會被修改,原型對象中可以存放方法,當調用構造函數構造的對象方法時,會首先查找該對象自己有沒有這個方法,如果沒有,再去原型對象中找這個方法。
<pre>function People(name){ this.name=name; } People.prototype.sayName = function(){ console.log(this.name); } var p1=new People('Penny'); p1.sayName(); var p2 = new People('hunger'); p2.sayName();
</pre>
4. 畫出如下代碼的原型圖 (難度:****
)
<pre>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('前端');
</pre>
5. 以下代碼中的變量age有什么區別(難度: ****
)
<pre>function People (){ var age = 1 //age是定義的一個局部變量,函數內部的私有屬性 this.age = 10;//如果是全局環境下執行函數的話,this.age=window.age=10 //如果以new的方式生成構造函數的話,this指向構造函數的對象,age為這個對象的屬性 } People.age = 20;//age是People函數的屬性 People.prototype.age = 30;//原型對象的屬性
</pre>
代碼
1. 創建一個 Car 對象,擁有屬性name、color、status;擁有方法run,stop,getStatus (難度: ****
)
<pre>function Car(name,color,status){ this.name = name; this.color = color; this.status = status; this.run = function(){ this.status = 'running'; } this.stop = function(){ this.status = 'stop'; } this.getStatus= function(){ return this.status; } } var car1 = new Car('BMW','red','stop');
</pre>
2. 創建一個 GoTop 對象,當 new 一個 GotTop 對象則會在頁面上創建一個回到頂部的元素,點擊頁面滾動到頂部。擁有以下屬性和方法 (難度: ****
)
- ct屬性,GoTop 對應的 DOM 元素的容器
- target屬性, GoTop 對應的 DOM 元素
- bindEvent 方法, 用于綁定事件
- createNode 方法, 用于在容器內創建節點
3. 使用構造函數創建對象的方式完成輪播功能( 查看demo ),使用如下調用方式
<pre>`
function Carousel($node){
//todo...
}Carousel.prototype = {
//todo ..
};
var $node1 = $('.ct').eq(0);
var $node2 = $('.ct').eq(1);
var carousel1 = new Carousel($node1);
var carousel2 = new Carousel($node2);
`</pre>
4. 使用構造函數創建對象的方式實現 Tab 切換功能
版權歸本人及饑人谷所有,轉載請注明出處。