學習JavaScript高級第一周總結

本周學習了JS高級,比起之前學習的html 、css、JS基礎,JS高級還是比較難接受一點的,特意利用周末的閑暇,來總結一下本周學習的內容。老師說總結有利于對學習知識的鞏固。特寫此總結來增加自己對所學知識的了解,掌握。

面向對象入門:

什么事面向對象:

面向對象就是把構成事物問題分解成各個對象,建立對象的目的不是為了完成事物中的一個步驟,而是為了描述解決事物問題的步驟中的行為。

1、面向對象是一種思維方法。

2、面向對象是一種編程方法。

3、面向對象并不只是針對某一種編程語言

面向對象和面向過程的區別:

面向過程側重于問題解決步驟,側重于局部。

面向對象側重解決某一問題的功能。側重于整體。

編程語言中面向對象的實現方式:

1、基于類的面向對象----典型語言:java、C#

2、基于原型的面向對象----典型語言:JavaScript

但是無論以何種方式實現,都具有是哪個特征:封裝、繼承、多態。

對象的一些認知:

對象就是無序屬性的集合,可以包括基本值,對象或函數。

用大括號括起來的一系列鍵值對,就構成一個JavaScript對象,這種創建對象的方式稱之為字面量創建對象。請看下列代碼:

其中name , age , sex , eat.都是對象person的屬性,屬性可以是任何類型的。可以是簡單數據類型,也可以是函數,也可以是對象。當一個屬性是一個函數時。我們稱為這個對象的方法。

訪問對象的屬性:

訪問對象的屬性有兩種方法。

1.對象.屬性名。比如訪問上面代碼里對象的屬性:person.name; 如果屬性名是個變量,那么這種訪問方式會失效。并報錯。

2.對象[屬性名]。比如訪問上面代碼里對象的屬性:person [" age ]" ?。如果屬性名是個變量,那么訪問可以直接訪問,不需要加引號。

給對象添加屬性:

person.hobbies = " 籃球"。 person.age = 40。 ?給對象添加屬性時會先判斷該對象里有沒有該屬性。如果有,就是更改對象的屬性值,如果沒有,則給該對象添加這個屬性。

刪除對象的屬性:

刪除對象的屬性需要用 delete 操作符。如:delete ?person.name ? 這樣為刪除對象的name屬性。

遍歷對象的屬性:

遍歷對象屬性用 for。。in。。 ?如: for( pn ?in ?person) { ? ? } ? ?其中pn為對象的屬性的名稱。

構造函數創建對象:

看下面代碼:

使用構造函數創建對象,必須使用 new 關鍵字,后面跟著 構造函數的名,根據需要傳入參數。將構造函數的作用域傳遞給新對象,其中的 this ?表示 誰調用 this 就指向誰。如 上面代碼 this 就指向 p1。

原型理解:

函數的原型對象:申明一個函數a,瀏覽器就會自動創建一個對象b。并且函數a里會有一個默認屬性:prototype , 指向對象b。這個對象b就是函數a的原型對象。a.prototype = = b 。 并且對象b里也有一個默認屬性 constructor ,指向函數a。 b . constructor == a 。?

使用構造函數創建對象:當我們把一個函數作為構造函數來 new 一個對象的時候。那么這個對象里會有一個默認的不可見的屬性:[[ proto ]] .這個屬性就指向 者個構造函數的原型。如下:p1.__proto__ == person.prototype .

請看下面代碼:


關于原型的方法:hasOwnProperty() ?方法,判斷一個屬性是否來自對象本身。但是不能判斷這個屬性是否存在。因為可能存在于原型中。

in操作符: 用來判斷一個屬性是否存在于對象中,先會在對象本身查找,如果找不到就去原型中查找,如果存在者個屬性,就返回true。

由上面可以知道判斷 一個對象的屬性是否存在于原型中。看下面代碼:

組合使用原型模式和構造函數模式創建對象:

原型創建對象的特點:屬性共享(缺點)? 方法共享(優點)

構造函數創建對象的特點:屬性不共享(優點)? 方法不共享(缺點)

組合模式創建對象:? 綜合兩種模式的優點,在構造函數內部封裝屬性,在原型對象內封裝方法。缺點:封裝不徹底。看下面代碼:

動態原型模式創建對象:把所有的屬性和方法都封裝在構造方法中,在需要的時候再去初始化原型。推薦使用,因為解決了封裝不徹底問題。看下面代碼:

JavaScript的繼承:

繼承:繼承是在原型鏈的基礎上實現的。指定對象的原型對象為某一個自定義對象其實就完成了繼承。

原型鏈:

構造函數的 prototype 屬性指向原型對象,原型對象的 constructor 屬性指向構造函數,new構造函數的 [[proto]]? 屬性指向構造函數的原型。尋找對象的屬性或方法先在自身查找,在去原型中查找,找不到再去原型的原型中查找。。。直到最高級的原型。就是根據原型鏈查找。

默認頂端原型:Object構造函數的原型對象。我們隨意創建一個對象,就有很多方法可以調用,就是繼承來自Object的原型對象的方法如圖:

更改對象的原型:請看代碼:

上面的代碼其實就完成了Son繼承Father的過程。

繼承的缺陷:父元素屬性共享。看下面代碼:

解決方式:借用構造函數調用繼承:只是完成構造方法的調用,并沒有繼承。call(參數1,。。。) 接受的是一個一個的參數? ? 參數1:要執行的方法中的this的指向。? 其他參數: 函數的所有參數。apply() 接受的是數組。看下面代碼:組合繼承:

測試數據類型的方法:

typeof: 測試對象,一般返回 Object ,用處不大。

instanceof? ? 測試一個對象是不是某種類型,返回 boolean 值。

isPrototypeOf(對象)? 原型對象的方法,判斷參數對象是不是由這個原型派生出來的。

this指向總結:

在JavaScript中,this的指向是動態改變( 運行時綁定 )的,不同的調用方式,ths的指向是不同的。

1.調用一個方法或者函數的時候,如果是直接調用方法名()則這函數或方法中的this指代的就是window

2.調用一個方法或者函數的時候,使用的是對象.方法名()則這個函數或方法中的this指代的就是這個對象

3.當做構造方法來用,使用new的時候,則this指代的是將要創建的對象

4.使用call或applay改變this的指向

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,002評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,400評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,136評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,714評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,452評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,818評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,812評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,997評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,552評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,292評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,510評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,721評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,121評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,429評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,235評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,480評論 2 379

推薦閱讀更多精彩內容

  • 博客內容:什么是面向對象為什么要面向對象面向對象編程的特性和原則理解對象屬性創建對象繼承 什么是面向對象 面向對象...
    _Dot912閱讀 1,443評論 3 12
  • 第5章 引用類型 引用類型的值(對象)是引用類型的一個示例。在ECMAScript 中,引用類型是一種數據結構,用...
    力氣強閱讀 724評論 0 0
  • 今天的名字沒有字什么的,覺得乏味,我的名字是王秋偉小字秋笙,字玉笙,又字穩重,號青蓮居士,又號湖州居士,家住浙江省...
    王玉笙閱讀 292評論 0 0
  • 從江蘇帶到福建的南瓜。 千里迢迢的終極目標是成為南瓜燈。 南瓜燈失敗了,挖下來的邊角料和挖下來的五角星,我放蒸鍋隔...
    團團寶貝媽媽閱讀 161評論 0 0
  • 導語: 最近被老板找談話,因公司發展戰略調整。我面臨兩個選擇。一是調崗,并降工資;二是離職。 因為自己有預見性的前...
    我可以的閱讀 972評論 0 0