OOP 指什么沦偎?有哪些特性 (難度: ***
)
- 面向?qū)ο缶幊蹋∣bject Oriented Programming,OOP咳蔚,面向?qū)ο蟪绦蛟O計)是一種計算機編程架構(gòu)豪嚎。
- 封裝:能夠把一個實體的信息、功能谈火、響應都裝入一個單獨的對象中的特性侈询。具備封裝性(Encapsulation)的面向?qū)ο蟪绦蛟O計隱藏了某一方法的具體運行步驟,取而代之的是通過消息傳遞機制發(fā)送消息給它糯耍。封裝是通過限制只有特定類的對象可以訪問這一特定類的成員扔字,而它們通常利用接口實現(xiàn)消息的傳入傳出囊嘉。
- 繼承:可以使用現(xiàn)有類的功能,并且可以在不重新編寫原來類的情況下革为,進行擴展扭粱。
- 多態(tài): 是指由繼承而產(chǎn)生的相關的不同的類,其對象對同一消息會做出不同的響應
- 抽象: 簡化復雜的現(xiàn)實問題的途徑震檩,它可以為具體問題找到最恰當?shù)念惗x琢蛤,并且可以在最恰當?shù)睦^承級別解釋問題。
如何通過構(gòu)造函數(shù)的方式創(chuàng)建一個擁有屬性和方法的對象? (難度: ***
)
核心為:
var xxx = new function()
prototype 是什么抛虏?有什么特性 (難度: ***
)
- 所有函數(shù)都有 prototype
- 對象.proto === 構(gòu)造函數(shù).prototype
函數(shù)可以通過prototype這個屬性創(chuàng)建一個公共區(qū)域博其,此函數(shù)構(gòu)造的對象都可以通過它們的proto屬性訪問到這個公共區(qū)域
畫出如下代碼的原型圖 (難度: ****
)
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('前端');
以下代碼中的變量age有什么區(qū)別(難度: ****
)
function People (){
var age = 1;//局部變量
this.age = 10;//為構(gòu)造對象中的age
}
People.age = 20;//函數(shù)自身的屬性age
People.prototype.age = 30;//函數(shù)的原型age