最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript原型繼承之基礎(chǔ)機制分析

 更新時間:2011年08月26日 00:43:05   作者:  
由于語言設(shè)計上的原因,JavaScript 沒有真正意義上“類”的概念。而通常使用的 new 命令實例化對象的方法,其實是對原型對象的實例化。
這一語言功能的本質(zhì)依賴于 JavaScript 特有的原型鏈(prototype chain)模式。
所以嚴格意義上說,JavaScript 是基于原型的面向?qū)ο笳Z言。也就是說,每個實例對象都具有一個原型。對象從該原型中繼承屬性和方法。

1、構(gòu)造函數(shù)

利用構(gòu)造函數(shù),可以簡單地創(chuàng)建對象。構(gòu)造函數(shù)內(nèi)的 this 關(guān)鍵字指向?qū)嵗龑ο蟊旧恚?
復(fù)制代碼 代碼如下:

function People(name){
this.name = name;
}

使用 new 運算符和構(gòu)造函數(shù)創(chuàng)建實例對象:
復(fù)制代碼 代碼如下:

var people = new People('小明');
console.log(people.name); //小明

但如果創(chuàng)建了兩個實例,這兩個實例之間無法直接共享屬性和方法:
復(fù)制代碼 代碼如下:

var people1 = new People('小明');
var people2 = new People('小王');
people1.sex = 'male';
console.log(people2.sex); //undefined

也就是說對象一旦被實例化,其屬性方法都獨立存在,對某個屬性的修改不會影響到其他實例。

2、Prototype

于是就有了 prototype 屬性,這個屬性是在生成實例對象時自動創(chuàng)建的。它本身又是一個對象,擁有能夠在實例間共享的屬性和方法。而實例本身的屬性和方法,則包含在構(gòu)造函數(shù)中。換句話說,構(gòu)造函數(shù)內(nèi)部的屬性和方法,在經(jīng)過實例化后都成為了本地的屬性和方法,而原型(prototype)中的屬性和方法在實例中只是一種引用,因此能夠被多個實例共享。

還是剛才那個構(gòu)造函數(shù),現(xiàn)在為它增加 prototype 屬性:
復(fù)制代碼 代碼如下:

People.prototype.sex = 'female';
//或者寫成 People.prototype = {sex: 'female'};
console.log(people1.sex); //male
console.log(people2.sex); //female

People 構(gòu)造函數(shù)的 prototype 屬性參數(shù)會直接影響到 people1 和 people2 兩個實例。

但為什么 people1.sex 輸出 male 呢?這是由于在 JavaScript 中,原型關(guān)系以遞歸形式存在。對象的原型也是一個對象,而原型的本身也可能具有一個原型。原型的最高層級是全局的 Object 對象。

這就是說,一旦 people1.sex 被設(shè)置為 male 后,它在原型中對應(yīng)的值就無法被暴露出來。假如 people1.sex 本身沒有值,才會從構(gòu)造函數(shù)的 prototype 屬性中讀取,以此類推一級一級向上查找,直到 Object 對象。

注:使用 “null” 給對象賦值,可以銷毀自定義對象,釋放內(nèi)存資源。

相關(guān)文章

  • JS實現(xiàn)統(tǒng)計字符串中字符出現(xiàn)個數(shù)及最大個數(shù)功能示例

    JS實現(xiàn)統(tǒng)計字符串中字符出現(xiàn)個數(shù)及最大個數(shù)功能示例

    這篇文章主要介紹了JS實現(xiàn)統(tǒng)計字符串中字符出現(xiàn)個數(shù)及最大個數(shù)功能,結(jié)合實例形式分析了javascript字符串遍歷、統(tǒng)計相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • Javascript編寫俄羅斯方塊思路及實例

    Javascript編寫俄羅斯方塊思路及實例

    本文主要給大家介紹的是使用javascript編寫俄羅斯方塊小游戲的思路和具體的實例代碼,有需要的小伙伴可以參考下
    2015-07-07
  • 微信小程序通過保存圖片分享到朋友圈功能

    微信小程序通過保存圖片分享到朋友圈功能

    小程序內(nèi)是不能直接分享到朋友圈的。所以只能通過生成圖片,攜帶小程序二維碼,保存到手機相冊,讓用戶自己選擇發(fā)到朋友圈。然后可以通過在小程序中識別二維碼來進入小程序的指定頁面。下面小編給大家分享實現(xiàn)代碼,需要的朋友參考下吧
    2018-05-05
  • canvas時鐘效果

    canvas時鐘效果

    本文主要介紹了canvas實現(xiàn)時鐘效果的代碼。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • js獲取當月最后一天實例代碼

    js獲取當月最后一天實例代碼

    這篇文章主要介紹了js獲取當月最后一天實例代碼,有需要的朋友可以參考一下
    2013-11-11
  • 微信小程序分包操作實戰(zhàn)指南

    微信小程序分包操作實戰(zhàn)指南

    分包指的是把一個完整的小程序項目,按照需求劃分為不同的子包, 在構(gòu)建時打包成不同的分包,用戶在使用時按需進行加載,下面這篇文章主要給大家介紹了關(guān)于微信小程序分包操作的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • javaScript刪除對象屬性的幾種方法總結(jié)

    javaScript刪除對象屬性的幾種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于javaScript刪除對象屬性的幾種方法的相關(guān)資料,它們在不同場景下有不同的應(yīng)用,需要根據(jù)實際情況選擇最合適的刪除方法,文中通過實例代碼介紹的非常詳細,下面需要的朋友可以參考下
    2023-06-06
  • js字符串截取函數(shù)slice、substring和substr的比較

    js字符串截取函數(shù)slice、substring和substr的比較

    這篇文章主要震碎js字符串截取函數(shù)slice、substring和substr進行比較,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 微信小程序?qū)崿F(xiàn)時間戳格式轉(zhuǎn)換

    微信小程序?qū)崿F(xiàn)時間戳格式轉(zhuǎn)換

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)時間戳格式轉(zhuǎn)換,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • JavaScript實現(xiàn)簡易tab欄切換案例

    JavaScript實現(xiàn)簡易tab欄切換案例

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)簡易tab欄切換案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論

武功县| 太湖县| 孟州市| 柳州市| 五寨县| 页游| 城口县| 蕲春县| 沐川县| 娱乐| 金昌市| 康乐县| 开阳县| 讷河市| 梅州市| 十堰市| 长岭县| 无棣县| 高清| 新竹市| 汶上县| 胶州市| 深州市| 文安县| 拉萨市| 玉溪市| 深水埗区| 南木林县| 江都市| 德江县| 绍兴市| 蓝田县| 凉山| 武隆县| 龙海市| 陇西县| 定陶县| 秀山| 开远市| 泽州县| 林西县|