1.OOP 指什么?有哪些特性
OOP全稱(Object Oriented Programming)面向?qū)ο缶幊蹋怯?jì)算機(jī)的一種編程架構(gòu)。
OPP的一條基本規(guī)則是,計(jì)算機(jī)程序由能夠起到子程序作用的單個(gè)或?qū)ο蠼M合而成。包含屬性和方法的是對(duì)象實(shí)例,而JS沒(méi)有類的概念,而是直接使用對(duì)象來(lái)完成編程任務(wù)。面向?qū)ο缶幊淌沟贸绦蛴辛藦?fù)用性,能夠明確的實(shí)現(xiàn)某一項(xiàng)具體的功能,使得程序員更加注重工程項(xiàng)目的需求分析,而非某一具體功能實(shí)現(xiàn)的內(nèi)在邏輯,極大的縮短了項(xiàng)目周期。
特性有:
- 封裝性:把客觀的事物封裝成抽象的類,要用的時(shí)候只需要調(diào)用,而不需要在意內(nèi)部是怎么樣運(yùn)行的。
- 繼承性:可以使用現(xiàn)有類的功能,并且可以在不重新編寫原來(lái)類的情況下,進(jìn)行擴(kuò)展。
- 多態(tài):是指通過(guò)繼承得到相關(guān)而不同的類,其對(duì)象對(duì)不同的消息會(huì)做出不同的響應(yīng)。多態(tài)的核心思想是將變與不變的東西區(qū)分開(kāi)來(lái),因?yàn)镴S是弱類型語(yǔ)言,所以沒(méi)有傳統(tǒng)的面向?qū)ο缶幊痰亩鄳B(tài)。
- 抽象:簡(jiǎn)化復(fù)雜的現(xiàn)實(shí)問(wèn)題的路徑,它可以為具體問(wèn)題找到最恰當(dāng)?shù)念惗x,并且可以在最恰當(dāng)?shù)睦^承級(jí)別解釋問(wèn)題。
2. 如何通過(guò)構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)擁有屬性和方法的對(duì)象?
函數(shù)也是對(duì)象的一種它繼承了對(duì)象原型,可以對(duì)其添加屬性和方法,而構(gòu)造函數(shù)也是一種函數(shù),所以用自定義函數(shù)的方式,所以使用new操作符來(lái)進(jìn)行實(shí)例驗(yàn)證。
例:
function Sayhi(name,age){
this.name = name;
this.age = age;//這是屬性
this.say = function(){
console.log(this.name + ":我今年" + this.age + "歲了" )//這是方法
};
}
var S1 = new Sayhi("小明",28);
var S2 = new Sayhi("小紅",19);
3.prototype 是什么?有什么特性
prototype即原型,每創(chuàng)建一個(gè)函數(shù)都有prototype屬性,這個(gè)屬性是一個(gè)指向一個(gè)對(duì)象的指針,這個(gè)對(duì)象的用途是包含可以由特定類型的所有實(shí)例共享的屬性和方法。
對(duì)象proto===構(gòu)造函數(shù)prototype,函數(shù)可以通過(guò)prototype這個(gè)屬性創(chuàng)建一個(gè)公共區(qū)域,此函數(shù)構(gòu)造的對(duì)象都可以通過(guò)它們來(lái)訪問(wèn)到這個(gè)公共區(qū)域。
例:
function Sayhi(name,age){
this.name = name;
this.age = age;
Sayhi.prototype.Sayhello = function(){
console.log('hello')
}
}
var S1 = new Sayhi("小明",28);
var S2 = new Sayhi("小紅",19);
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.以下代碼中的變量age有什么區(qū)別
····
function People() {
var age = 1;//函數(shù)People的局部變量
this.age = 10;//當(dāng)調(diào)用函數(shù)People的時(shí)候定義調(diào)用者的age屬性
}
People.age = 20;//給函數(shù)People綁定了age屬性
People.prototype.age = 30;//函數(shù)People的原型的age屬性
····
代碼
創(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(){
this.status = run;
};
Car.prototype.stop = function(){
this.status = stop;
};
Car.prototype.getStatus = function(){
console.log('this.status')
};
var Car1 = new Car("jili","white","running")
····
本文歸作者和饑人谷所有轉(zhuǎn)載請(qǐng)注明出處