1.OOP指什么?有什么特性
OOP(Object-oriented programming舵鳞,面向?qū)ο缶幊?探入,是種具有對(duì)象的程序編程典范狡孔,也是一種程序開(kāi)發(fā)的抽象方針⌒轮ⅲ可能包含數(shù)據(jù)步氏、屬性、方法徒爹,對(duì)象則是指類(lèi)的實(shí)例,將對(duì)象作為程序的基本單元芋类,將程序和數(shù)據(jù)封裝其中隆嗅,以提高軟件的重用性、靈活性和擴(kuò)展性侯繁。
特性:封裝胖喳、繼承、多態(tài)
封裝:把客觀(guān)事物封裝成抽象的類(lèi)贮竟,并且類(lèi)可以把自己的數(shù)據(jù)和方法只讓可信的類(lèi)和方法操作丽焊,對(duì)不可信的進(jìn)行信息隱藏。
繼承:可以使用現(xiàn)有類(lèi)的所有功能咕别,并在無(wú)需重新編寫(xiě)原來(lái)類(lèi)的情況下對(duì)這些功能進(jìn)行擴(kuò)展技健。
多態(tài):允許將子類(lèi)類(lèi)型的指針賦值給父類(lèi)類(lèi)型的指針。JS是弱類(lèi)型語(yǔ)言惰拱,沒(méi)有多態(tài)的概念雌贱。
2.如何通過(guò)構(gòu)造函數(shù)的方法創(chuàng)建一個(gè)擁有屬性和方法的對(duì)象?
function People(name,age){
this.name = name;
this.age = age;
}
People.prototype.say = function(){
console.log(this.name + ':' + this.age);
}
var p = new People('mike', 20);
3.prototype是什么偿短?有什么特性
每個(gè)函數(shù)都有prototype屬性欣孤,這個(gè)屬性是一個(gè)指針,指向一個(gè)對(duì)象昔逗,而這個(gè)對(duì)象的用途是包含所有實(shí)例共享的屬性和方法降传。
prototype就是通過(guò)調(diào)用構(gòu)造函數(shù)而創(chuàng)建的對(duì)象實(shí)例的原型對(duì)象,通常我們可以將實(shí)例對(duì)象的公共屬性和方法放在prototype對(duì)象中勾怒。
特性:
(1)每個(gè)函數(shù)都有prototype屬性
(2)所有對(duì)象都有__proto__
(3)構(gòu)造函數(shù).prototype
= 對(duì)象.__proto__
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
function Car(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('status:' + this.status);
}
var car = new Car('Bens','blue',0);
car.getStatus(); //0
6.創(chuàng)建一個(gè)GoTop對(duì)象,當(dāng)new一個(gè)GoTop對(duì)象則會(huì)在頁(yè)面上創(chuàng)建一個(gè)回到頂部的元素鹦赎,點(diǎn)擊頁(yè)面滾動(dòng)到頂部谍椅。擁有以下屬性和方法
1.'ct'屬性,GoTop對(duì)應(yīng)的DOM元素的容器
2.'tatget'屬性古话,GoTop對(duì)應(yīng)的元素
3.'bindEvent'方法雏吭,用于綁定事件
4.'creatNode'方法,用于在容器內(nèi)創(chuàng)建節(jié)點(diǎn)
function GoTop(ct){
this.ct = ct;
this.target = $('<a class="target">GoTop</a>');
this.bindEvent();
this.createNode();
}
GoTop.prototype = {
bindEvent: function(){
this.target.click(function(){
$(window).scrollTop(0)
})
},
createNode: function(){
this.ct.append(this.target);
}
};
new GoTop($('.ct'));