問答
1. OOP 指什么?有哪些特性 (難度: ***
)
定義:OOP全稱Object Oriented Programming帜消,即面向對象編程棠枉,是一種計算機編程架構。
特性:
- 封裝:將代碼封裝為一個整體泡挺,擁有自己獨立的特性辈讶,像外界提供調用的接口,隱藏內部具體的實現(xiàn)細節(jié)娄猫。
- 繼承:子類自動繼承其父級類中的屬性和方法贱除,并可以添加新的屬性和方法或者對部分屬性和方法進行重寫生闲。繼承增加了代碼的可重用性。
- 多態(tài):在繼承的基礎上實現(xiàn)勘伺,父類引用指向子類對象跪腹,多個子類可以使用同一方法而互不影響,以此獲得不同的結果飞醉。
2. 如何通過構造函數(shù)的方式創(chuàng)建一個擁有屬性和方法的對象? (難度: ***
)
當new一個函數(shù)的時候冲茸,這個函數(shù)就會作為構造函數(shù)創(chuàng)建一個對象。函數(shù)里面的this指向創(chuàng)建的這個對象缅帘,給this創(chuàng)建屬性和方法轴术,就是給這個對象創(chuàng)建屬性和方法。
<pre>function People(name){ this.name=name; this.sayName=function(){ console.log(this.name) ; } } var p1=new People('Penny');
</pre>
3. prototype 是什么钦无?有什么特性 (難度: ***)
任何一個函數(shù)都具有prototype屬性逗栽,這個屬性是一個指針,指向一個對象失暂,即原型對象彼宠,當由一個構造函數(shù)生成一個對象時,這個對象的__proto__
屬性指向該對象的原型對象(構造函數(shù)prototype屬性指向的對象)弟塞,即指向空間中同一塊存放區(qū)域凭峡。當函數(shù)的prototype屬性修改時,所有此函數(shù)生成的對象的__proto__
屬性由于指向這個對象决记,也會被修改摧冀,原型對象中可以存放方法,當調用構造函數(shù)構造的對象方法時系宫,會首先查找該對象自己有沒有這個方法索昂,如果沒有,再去原型對象中找這個方法扩借。
<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有什么區(qū)別(難度: ****
)
<pre>function People (){ var age = 1 //age是定義的一個局部變量椒惨,函數(shù)內部的私有屬性 this.age = 10;//如果是全局環(huán)境下執(zhí)行函數(shù)的話,this.age=window.age=10 //如果以new的方式生成構造函數(shù)的話往枷,this指向構造函數(shù)的對象框产,age為這個對象的屬性 } People.age = 20;//age是People函數(shù)的屬性 People.prototype.age = 30;//原型對象的屬性
</pre>
代碼
1. 創(chuàng)建一個 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. 創(chuàng)建一個 GoTop 對象,當 new 一個 GotTop 對象則會在頁面上創(chuàng)建一個回到頂部的元素导而,點擊頁面滾動到頂部忱叭。擁有以下屬性和方法 (難度: ****
)
- ct屬性隔崎,GoTop 對應的 DOM 元素的容器
- target屬性, GoTop 對應的 DOM 元素
- bindEvent 方法韵丑, 用于綁定事件
- createNode 方法爵卒, 用于在容器內創(chuàng)建節(jié)點
3. 使用構造函數(shù)創(chuàng)建對象的方式完成輪播功能( 查看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. 使用構造函數(shù)創(chuàng)建對象的方式實現(xiàn) Tab 切換功能
版權歸本人及饑人谷所有撵彻,轉載請注明出處钓株。