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

資訊專欄INFORMATION COLUMN

JavaScript精煉---類(class)、構(gòu)造函數(shù)(constructor)、原型(proto

zzbo / 2771人閱讀

摘要:在討論構(gòu)造器和原型方法前,我可以看看一種叫做工廠方式的仿造方法。因此,出現(xiàn)了構(gòu)造函數(shù)方式,它的關(guān)鍵在于構(gòu)造器概念的引入。

類 Class
類的概念應(yīng)該是面向?qū)ο笳Z言的一個特色,但是JavaScript并不像Java,C++等高級語言那樣擁有正式的類,而是多數(shù)通過構(gòu)造器以及原型方式來仿造實現(xiàn)。在討論構(gòu)造器和原型方法前,我可以看看一種叫做“工廠方式”的仿造方法。

function start() {

   alert("Bang!!");

}


function createCar(color, title) {

   var car = {};

   car.color = color;

   car.title = title;

   car.start = start;

   return car;

}

 

var car1 = createCar("red", "BMW");

var car2 = createCar("yellow", "VOIS");

這種方式顯然可以實現(xiàn)class的功能,但是外形上怎么也無法說它是個class以及class實例的創(chuàng)建過程。因此,出現(xiàn)了“構(gòu)造函數(shù)方式”,它的關(guān)鍵在于構(gòu)造器(Constructor)概念的引入。

構(gòu)造器 Constructor
加粗文字
我們先來看“構(gòu)造函數(shù)方式”的具體做法:

function start(){

   alert("Bang!!!");

}

 

//constructor

function Car(color, title){

   this.color = color;

   this.title = title;

   this.start = start;

}

 

var car1 = new Car("red", "BMW");

var car2 = new Car("yellow", "VOIS");

這個看起來有點類的樣子了吧(先不提那個難看的外置function)?我們發(fā)現(xiàn),那個constructor其實就是一個簡單的function,它與“工廠方式”中的createCar()區(qū)別就在于:1、方法名大寫 2、沒有了空對象的創(chuàng)建和返回 3、使用this做引用。那原來的那個空對象的創(chuàng)建以及返回的步驟去哪了呢?這兩個步驟,現(xiàn)在都由創(chuàng)建實例時的“new”實現(xiàn)了?!皀ew”這個操作符負責(zé)創(chuàng)建一個空對象,然后將那個叫做構(gòu)造器的function添加到實例對象中并觸發(fā)它,這樣這個function實際上就是這個對象的一個method,function中的this指向的便是這個對象,最后將這個對象返回。根據(jù)如上分析,我們可以把這個過程簡單分解為如下代碼:

var obj = {};

obj.constructor = Car;

obj.constructor("red", "BMW");  //”this“ refers to obj

return obj;


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

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

相關(guān)文章

  • JavaScript繼承理解:ES5繼承方式+ES6Class繼承對比

    摘要:寄生組合式繼承的繼承方式有多種主要有原型鏈繼承借用構(gòu)造函數(shù)組合式繼承寄生式繼承和寄生組合式繼承。中利用定義類,實現(xiàn)類的繼承子類里調(diào)用父類構(gòu)造函數(shù)實現(xiàn)實例屬性和方法的繼承子類原型繼承父類原型,實現(xiàn)原型對象上方法的繼承。 JavaScript中實現(xiàn)繼承 ??在JavaScript中實現(xiàn)繼承主要實現(xiàn)以下兩方面的屬性和方法的繼承,這兩方面相互互補,既有共享的屬性和方法,又有特有的屬性和方法。 ...

    liaoyg8023 評論0 收藏0
  • javascript的面向?qū)ο螅?em>原型鏈及繼承

    摘要:也就是說,不必在構(gòu)造函數(shù)中添加定義對象信息,而是可以直接將這些信息添加到原型中。子類的屬性,表示構(gòu)造函數(shù)的繼承,總是指向父類。以前,這些原生構(gòu)造函數(shù)是無法繼承的。 面向?qū)ο?js是一門基于對象的語言。js中的一切皆對象; console.log(Object.prototype.toString.call(123)) //[object Number] console....

    Xufc 評論0 收藏0
  • JavaScript 五十問——從源碼分析 ES6 Class 的實現(xiàn)機制

    摘要:防止類的構(gòu)造函數(shù)以普通函數(shù)的方式調(diào)用。這個函數(shù)的主要作用是通過給類添加方法,其中將靜態(tài)方法添加到構(gòu)造函數(shù)上,將非靜態(tài)的方法添加到構(gòu)造函數(shù)的原型對象上。 Class是ES6中新加入的繼承機制,實際是Javascript關(guān)于原型繼承機制的語法糖,本質(zhì)上是對原型繼承的封裝。本文將會討論:1、ES6 class的實現(xiàn)細2、相關(guān)Object API盤點3、Javascript中的繼承實現(xiàn)方案盤點...

    LeexMuller 評論0 收藏0
  • Javascript面向?qū)ο笈c繼承

    摘要:眾所周知,是一門面向?qū)ο蟮恼Z言,如果說針對面向?qū)ο髞戆l(fā)問的話,我會想到兩個問題,在中,類與實例對象是如何創(chuàng)建的,類與實例對象又是如何實現(xiàn)繼承的。但是在中是指向的,因為每一個構(gòu)造函數(shù)其實都是這個對象構(gòu)造的,中子類的指向父類可以實現(xiàn)屬性的繼承。 眾所周知,Javascript是一門面向?qū)ο蟮恼Z言,如果說針對面向?qū)ο髞戆l(fā)問的話,我會想到兩個問題,在js中,類與實例對象是如何創(chuàng)建的,類與實例對...

    pcChao 評論0 收藏0
  • ES6中class的使用

    摘要:如果不指定一個構(gòu)造函數(shù)方法則使用一個默認的構(gòu)造函數(shù)。一個類中出現(xiàn)多次構(gòu)造函數(shù)方法將會拋出一個錯誤。四關(guān)鍵字作為函數(shù)時,指向父類的構(gòu)造函數(shù)。五類的屬性和屬性作為構(gòu)造函數(shù)的語法糖,同時有屬性和屬性,因此同時存在兩條繼承鏈。 一、class的定義與基本用法 1.class的定義 ECMAScript 2015 中引入的 JavaScript 類實質(zhì)上是 JavaScript 現(xiàn)有的基于原型的...

    用戶84 評論0 收藏0

發(fā)表評論

0條評論

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