欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript原型繼承之基礎機制分析

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

1、構造函數(shù)

利用構造函數(shù),可以簡單地創(chuàng)建對象。構造函數(shù)內的 this 關鍵字指向實例對象本身:
復制代碼 代碼如下:

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

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

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

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

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

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

2、Prototype

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

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

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

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

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

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

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

相關文章

  • js通過var定義全局變量與在window對象上直接定義屬性的區(qū)別說明

    js通過var定義全局變量與在window對象上直接定義屬性的區(qū)別說明

    這篇文章主要介紹了js通過var定義全局變量與在window對象上直接定義屬性的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Typescript中使用引用路徑別名報錯的解決方法

    Typescript中使用引用路徑別名報錯的解決方法

    本文主要介紹了Typescript中使用引用路徑別名報錯的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • JavaScript手寫九宮格抽獎demo

    JavaScript手寫九宮格抽獎demo

    這篇文章主要為大家介紹了JavaScript 手寫九宮格抽獎demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 對于js垃圾回收機制的理解

    對于js垃圾回收機制的理解

    下面小編就為大家?guī)硪黄獙τ趈s垃圾回收機制的理解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • JavaScript 自動完成腳本整理(33個)

    JavaScript 自動完成腳本整理(33個)

    所謂的提升用戶體驗,其實就是把所有用戶視為極度弱智和超級懶鬼。比如JavaScript自動完成(Autocomplete)腳本, 常用于表單,用戶只需輸入一兩個字母,就為你擴展、聯(lián)想、匹配和供君選擇。
    2009-10-10
  • JavaScript實現(xiàn)指定數(shù)量的并發(fā)限制的示例代碼

    JavaScript實現(xiàn)指定數(shù)量的并發(fā)限制的示例代碼

    這篇文章主要介紹了JavaScript實現(xiàn)指定數(shù)量的并發(fā)限制的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • layui form.render(''select'', ''test2'') 更新渲染的方法

    layui form.render(''select'', ''test2'') 更新渲染的方法

    今天小編就為大家分享一篇layui form.render('select', 'test2') 更新渲染的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 純JS實現(xiàn)圖片驗證碼功能并兼容IE6-8(推薦)

    純JS實現(xiàn)圖片驗證碼功能并兼容IE6-8(推薦)

    這篇文章主要介紹了純JS實現(xiàn)圖片驗證碼功能并兼容IE6-8瀏覽器,需要的朋友可以參考下
    2017-04-04
  • JavaScript數(shù)組中相同的元素進行分組(數(shù)據(jù)聚合)groupBy函數(shù)詳解

    JavaScript數(shù)組中相同的元素進行分組(數(shù)據(jù)聚合)groupBy函數(shù)詳解

    今天在打算從js端時序數(shù)據(jù)庫TSDB中,按相同的類型的數(shù)據(jù)排在一起,并且取同一時間段最新的數(shù)據(jù),經過查詢這種思想叫做數(shù)據(jù)聚合,就是返回的數(shù)據(jù)要根據(jù)一個屬性來做計算,這篇文章主要介紹了JavaScript數(shù)組中相同的元素進行分組(數(shù)據(jù)聚合)?groupBy函數(shù),需要的朋友可以參考下
    2023-12-12
  • webpack5的entry和output配置小白學習

    webpack5的entry和output配置小白學習

    這篇文章主要為大家介紹了webpack5的entry和output使用配置小白學習詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05

最新評論