成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

JavaScript類的寫法

OnlyLing / 367人閱讀

摘要:在中,寫成類的本質(zhì)基本都是構(gòu)造函數(shù)原型。操作符左邊是待檢測(cè)類的對(duì)象,右邊是定義類的構(gòu)造函數(shù)。不宜用在這里,我們需要知道的幾種定義類的方法,除了上面的構(gòu)造函數(shù)外,還有方法用這個(gè)方法,類就是一個(gè)對(duì)象,而不是函數(shù)。

js類的基本含義

我們知道,在js中,是沒有類的概念的。類的所有實(shí)例對(duì)象都從同一個(gè)原型對(duì)象上繼承屬性,因此,原型對(duì)象是類的核心。

類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。類是抽象的,不占用內(nèi)存,而對(duì)象是具體的,占用存儲(chǔ)空間?!俣劝倏?/p>

早期的javascript需求都很簡(jiǎn)單,基本都是寫成函數(shù)的,然后是面向過程的寫法,后來慢慢的引入面向?qū)ο箝_發(fā)思想,再后來就慢慢寫成 。

js中,寫成類的本質(zhì)基本都是 構(gòu)造函數(shù)+原型。下面,就討論一下js類的幾種寫法:

構(gòu)造函數(shù) 法
/**
* Person類:定義一個(gè)人,有name屬性和getName方法
   */

由上面控制臺(tái)輸出結(jié)果可知,p1和p2的確是類Person的實(shí)例對(duì)象。instanceof操作符左邊是待檢測(cè)類的對(duì)象,右邊是定義類的構(gòu)造函數(shù)。這里,instanceof用來檢測(cè)對(duì)象p1是否屬于Person類。

這種方式的優(yōu)點(diǎn)是:我們可以根據(jù)參數(shù)來構(gòu)造不同的對(duì)象實(shí)例 ,缺點(diǎn)是每次構(gòu)造實(shí)例對(duì)象時(shí)都會(huì)生成getName方法,造成了內(nèi)存的浪費(fèi) 。

我們可以用一個(gè)外部函數(shù)來代替類方法,達(dá)到了每個(gè)對(duì)象共享同一個(gè)方法。改寫后的類如下:

//外部函數(shù)
原型方式

原型方式的缺點(diǎn)就是不能通過參數(shù)來構(gòu)造對(duì)象實(shí)例 (一般每個(gè)對(duì)象的屬性是不相同的) ,優(yōu)點(diǎn)是所有對(duì)象實(shí)例都共享getName方法(相對(duì)于構(gòu)造函數(shù)方式),沒有造成內(nèi)存浪費(fèi) 。

構(gòu)造函數(shù)+原型方式

取前面兩種的優(yōu)點(diǎn):
a、用構(gòu)造函數(shù)來定義類屬性(字段)。
b、用原型方式來定義類的方法。


這樣,我們就既可以構(gòu)造不同屬性的對(duì)象,也可以讓對(duì)象實(shí)例共享方法,不會(huì)造成內(nèi)存的浪費(fèi)。

為了讓js代碼風(fēng)格更緊湊,我們讓prototype方法代碼移到function Person的大括號(hào)內(nèi)。


在這里,我們需要知道的幾種定義類的方法,除了上面的構(gòu)造函數(shù)外,還有:

Object.create()方法

用這個(gè)方法,"類"就是一個(gè)對(duì)象,而不是函數(shù)。

 var Person = {
        name : "trigkit4",
        age : 21,
        run:  function(){
            alert("I like running");
        }
    }

然后,直接用Object.create()生成實(shí)例,不需要用到new。

var p1 = Object.create(Person);
    alert(p1.age);//21
    p1.run();//I like running

這種方法比"構(gòu)造函數(shù)法"簡(jiǎn)單,但是不能實(shí)現(xiàn)私有屬性和私有方法,實(shí)例對(duì)象之間也不能共享數(shù)據(jù),對(duì)"類"的模擬不夠全面。

createNew()方法

這種方法不需要用到this和prototype,其做法是用對(duì)象來模擬一個(gè)類,然后在類里面定義一個(gè)構(gòu)造函數(shù)createNew(),然后在createNew()里面定義實(shí)例對(duì)象,把這個(gè)實(shí)例對(duì)象作為返回值。


使用的時(shí)候,調(diào)用createNew()方法,就可以得到實(shí)例對(duì)象。

 var p1 = Person.createNew();
    p1.run();//I like running

這種寫法其實(shí)和對(duì)象字面量的寫法是很類似的,只不過一個(gè)是逗號(hào)分隔,一個(gè)是分號(hào)分隔。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/85332.html

相關(guān)文章

  • JavaScript的es6的class使用

    摘要:記錄的學(xué)習(xí)筆記,在回答別人的問題時(shí)發(fā)現(xiàn)自己的的理解誤差很大的在沒有帶來的的時(shí)候,我們編寫的時(shí)候很多時(shí)候會(huì)通過構(gòu)造函數(shù)和原型鏈來添加方法屬性,實(shí)現(xiàn)的功能。而是看成是構(gòu)造函數(shù)的寫法。等同于類的實(shí)例對(duì)象就像使用構(gòu)造函數(shù)一樣使用命令來創(chuàng)建一個(gè)實(shí)例。 記錄class的學(xué)習(xí)筆記,在回答別人的問題時(shí)發(fā)現(xiàn)自己的的理解誤差很大 javascript的class 在沒有es6帶來的class的時(shí)候,我們編...

    zgbgx 評(píng)論0 收藏0
  • JavaScript 的對(duì)象繼承方式,有幾種寫法?

    摘要:四混合方式對(duì)象冒充的主要問題是必須使用構(gòu)造函數(shù)方式,這不是最好的選擇。在中創(chuàng)建類的最好方式是用構(gòu)造函數(shù)定義屬性,用原型定義方法。注意,雖然代表了父類的構(gòu)造函數(shù),但是返回的是子類的實(shí)例,即內(nèi)部的指的是,因此在這里相當(dāng)于。 一、對(duì)象冒充 其原理如下:構(gòu)造函數(shù)使用 this 關(guān)鍵字給所有屬性和方法賦值(即采用類聲明的構(gòu)造函數(shù)方式)。因?yàn)闃?gòu)造函數(shù)只是一個(gè)函數(shù),所以可使 Parent 構(gòu)造函數(shù) ...

    gggggggbong 評(píng)論0 收藏0
  • 對(duì)象的繼承(原型鏈)

    摘要:規(guī)定,每個(gè)函數(shù)都有一個(gè)屬性,指向一個(gè)對(duì)象大毛二毛構(gòu)造函數(shù)的屬性,就是實(shí)例對(duì)象和的原型對(duì)象。這就是所有對(duì)象都有和方法的原因,因?yàn)檫@是從繼承的構(gòu)造函數(shù)的屬性指向一個(gè)數(shù)組,就意味著實(shí)例對(duì)象可以調(diào)用數(shù)組方法。 目錄 [隱藏] 原型對(duì)象概述構(gòu)造函數(shù)的缺點(diǎn)prototype 屬性的作用原型鏈constructor 屬性instanceof 運(yùn)算符構(gòu)造函數(shù)的繼承多重繼承模塊基本的實(shí)現(xiàn)方法封裝私有變量...

    big_cat 評(píng)論0 收藏0
  • 《深入理解ES6》筆記—— JavaScript中的類class(9)

    摘要:新建一個(gè)類該函數(shù)返回一個(gè)類的實(shí)例給函數(shù)傳入通過立即調(diào)用類構(gòu)造函數(shù)可以創(chuàng)建單例。派生類是指繼承自其它類的新類。在構(gòu)造函數(shù)中訪問之前要調(diào)用,負(fù)責(zé)初始化。在構(gòu)造函數(shù)中使用通常表示當(dāng)前的構(gòu)造函數(shù)名。 ES5中的近類結(jié)構(gòu) ES5以及之前的版本,沒有類的概念,但是聰明的JavaScript開發(fā)者,為了實(shí)現(xiàn)面向?qū)ο?,?chuàng)建了特殊的近類結(jié)構(gòu)。 ES5中創(chuàng)建類的方法:新建一個(gè)構(gòu)造函數(shù),定義一個(gè)方法并且賦值...

    gggggggbong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<