成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript原型繼承之基礎機制

開發 前端
由于語言設計上的原因,JavaScript 沒有真正意義上“類”的概念。而通常使用的 new 命令實例化對象的方法,其實是對原型對象的實例化。這一語言功能的本質依賴于 JavaScript 特有的原型鏈(prototype chain)模式。

由于語言設計上的原因,JavaScript 沒有真正意義上“類”的概念。而通常使用的 new 命令實例化對象的方法,其實是對原型對象的實例化。這一語言功能的本質依賴于 JavaScript 特有的原型鏈(prototype chain)模式。

所以嚴格意義上說,JavaScript 是基于原型的面向對象語言。也就是說,每個實例對象都具有一個原型。對象從該原型中繼承屬性和方法。

1、構造函數

利用構造函數,可以簡單地創建對象。構造函數內的 this 關鍵字指向實例對象本身:

  1. function People(name){  
  2.     this.name = name;  

使用 new 運算符和構造函數創建實例對象:

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

但如果創建了兩個實例,這兩個實例之間無法直接共享屬性和方法:

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

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

2、Prototype

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

還是剛才那個構造函數,現在為它增加 prototype 屬性:

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

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

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

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

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

原文:http://www.mangguo.org/javascript-prototype-inheritance-basic-mechanisms/

【編輯推薦】

  1. 10個頂級Web移動開發JavaScript框架推薦
  2. 微軟雄心勃勃,意欲將JavaScript打造成次世代贏家
  3. JavaScript入門之事件、cookie、定時等
  4. JavaScript入門之語言基礎
  5. 7個優秀的JavaScript資源推薦
責任編輯:陳貽新 來源: 芒果
相關推薦

2011-08-24 13:56:27

JavaScript

2011-08-31 14:48:33

JavaScript

2013-09-18 14:01:46

JavaScript

2016-12-27 09:10:29

JavaScript原型鏈繼承

2020-04-29 14:40:19

JavaScript繼承編程語言

2010-10-08 09:13:15

oop模式JavaScript

2017-04-07 11:15:49

原型鏈原型Javascript

2020-10-20 08:35:34

JS基礎進階

2011-06-07 08:58:31

javascript

2012-01-05 15:07:11

JavaScript

2020-11-30 07:59:59

JavaScript語言原型

2020-02-20 14:00:15

JavaScript原型原型鏈

2023-08-28 07:12:54

2011-08-10 17:04:43

JavaScript

2019-02-27 16:00:48

JS原型原型鏈對象

2022-05-26 09:20:01

JavaScript原型原型鏈

2016-06-07 14:28:39

Javascript原型

2012-02-14 09:45:02

JavaScript

2022-06-20 09:22:55

js原型鏈前端

2022-10-21 14:12:06

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久久久中文字幕二区 | 夜夜久久| 五月综合色啪 | 黄色一级视频 | 国产高潮好爽受不了了夜色 | www久久99 | 亚洲精品久久久一区二区三区 | 成人亚洲网 | 国产69精品久久99不卡免费版 | 精品美女久久久 | 国产精品视频999 | 亚洲成人一区二区三区 | 久久成人人人人精品欧 | 日操操夜操操 | 黑人成人网 | 欧美一级三级 | 亚洲一区二区三区免费视频 | 国产成人短视频在线观看 | 天天看天天干 | 国产精品久久国产精品久久 | 一区二区三区四区五区在线视频 | 国产精品久久av | 国产精品揄拍一区二区 | 91视频在线看 | 99视频免费在线 | 中文在线a在线 | 99福利在线观看 | 中文字幕在线观看一区 | 手机看片在线播放 | a欧美| 国家一级黄色片 | av超碰 | av片免费| 中文字幕在线观看一区 | 国产清纯白嫩初高生视频在线观看 | 国产无套一区二区三区久久 | 国产精品99久久久久久久久 | 国产一区在线免费观看视频 | 亚洲欧洲精品一区 | 国产美女免费视频 | 四虎影院在线观看av |