国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS中的面向?qū)ο缶幊?

lunaticf / 3590人閱讀

摘要:一面向?qū)ο缶幊堂嫦驅(qū)ο缶幊淌且环N抽象方式創(chuàng)建模型的編程方式。繼承我們實現(xiàn)一個子類,繼承汽車類將類的屬性和方法賦值給繼承汽車類的原型鏈創(chuàng)建子類實例以上是中的面向?qū)ο缶幊痰暮唵谓榻B,如有錯誤,歡迎指出。

一.面向?qū)ο缶幊?/strong>
面向?qū)ο缶幊?OOP--Object Oriented Programming)是一種抽象方式創(chuàng)建模型的編程方式。繼承,封裝,多態(tài)是OOP的三大基本特征。許多主流編程語言都支持OOP。例如Java,c++中通過new調(diào)用‘類’來創(chuàng)造實例,但是學(xué)習(xí)了JS的同學(xué)知道JS中沒有類的概念,那么JS怎么實現(xiàn)面向?qū)ο缶幊痰哪兀?br>JS實現(xiàn)OOP是通過原型鏈實現(xiàn)的,原型鏈的概念在這里不詳細講述,大家記住一個例子即可:

function._proto_ ==== Function.prototype

JS也通過new來創(chuàng)建實例,但是后面調(diào)用的不是類,而是構(gòu)造函數(shù)。
下面我們通過封裝繼承一個‘類’的例子來詳細闡述。
二.ES5實現(xiàn)封裝 繼承一個類
1.封裝
我們知道寶馬,奔馳,奧迪等都是汽車,汽車這個概念就是一個類,抽象出來代表了日常生活中的許多具體事物。

//汽車 構(gòu)造函數(shù)
function Car (name,color){
this.name = name;
this.color = color;
}

2.prototype模式
汽車的屬性有很多,不僅僅是名字和顏色,如果全部寫在構(gòu)造函數(shù)里,創(chuàng)建實例時再去一一地調(diào)用太過于麻煩,于是JS規(guī)定了一個prototype模式,每個構(gòu)造函數(shù)都有一個prototype屬性指向原型,“類”里面一些共有的屬性可以放在原型里面。例如汽車類的車型,動能方式等屬性都是共有屬性可以放在原型里。

Car.prototype.type = "car";

Car.prototype.getType = function () {
  return this.type;
};

Car.prototype.setType = function (newType) {
  this.type = newType;
  return newType;
};

Car.prototype.getName = function () {
  return this.name;
};

Car.prototype.setName = function (newName) {
  this.name = newName;
  return newName;
};

3.new關(guān)鍵字
JS中通過new關(guān)鍵字創(chuàng)建實例。

 var car1 = new Car("寶馬","red");
console.log(car1.type) // "car"

這里,我們思考一個問題:使用new創(chuàng)建實例,new到底做了些什么呢?
使用new創(chuàng)建實例,實際上是幫助我們減少了四行代碼:
1.new創(chuàng)建了臨時對象,可以使用this訪問到臨時對象
2.new也幫我們return了這個臨時對象
3.new指定了原型的名字--prototype
4.new創(chuàng)建實例,自動綁定原型。

car1._proto_ === Car.prototype

4.繼承
我們實現(xiàn)一個‘子類’,繼承‘汽車類’

function SUV ( price) {
 Car.call(this, "suv");   // 將 Car 類的屬性和方法賦值給 SUV
  this.price = price;
}
SUV.prototype = new Car("suv");// 繼承汽車類的原型鏈


SUV.prototype.getPrice = function () {
  return this.price;
};
SUV.prototype.setPrice = function (newPrice) {
  this.price = newPrice;
  return newPrice;
};
//創(chuàng)建子類實例
var suv1 = new SUV(1000);
console.log(suv1.getPrice());//1000

以上是JS中的面向?qū)ο缶幊痰暮唵谓榻B,如有錯誤,歡迎指出。
參考鏈接:
Javascript繼承機制的設(shè)計思想--阮一峰
JS中的new到底是干什么的?---方應(yīng)杭

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/107042.html

相關(guān)文章

  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    李昌杰 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    Lyux 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    AaronYuan 評論0 收藏0
  • 解決js面向對象編程的難題

    摘要:一面向?qū)ο缶幊毯喗槎x,簡稱,是一種程序設(shè)計思想。好處維護簡單模塊化是面向?qū)ο缶幊讨械囊粋€特征。可擴充性面向?qū)ο缶幊虖谋举|(zhì)上支持擴充性。 一、面向?qū)ο缶幊毯喗?1.定義: Object Oriented Programming,簡稱OOP,是一種程序設(shè)計思想。OOP把對象作為程序的基本單元,一個對象包含了數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)。 2.好處: (1)、維護簡單:模塊化是面向?qū)ο缶幊讨械囊粋€...

    ermaoL 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<