1. 程式人生 > >web前端技術基礎課程詳解之JavaScript面向對象

web前端技術基礎課程詳解之JavaScript面向對象

面向對象 對象 而在 包含 lob 。。 運算 需要 全局屬性

JavaScript中的面向對象是個老生常談的話題,但是依然有很多小夥伴處於懵逼狀態。面試時候最擔心的就是被問到面向對象相關的內容,自己看過無數的資料,依然對面向對象百思不得其解。到底什麽是原型?什麽是構造函數?什麽是繼承。。。一提到這些概念那真是欲哭無淚、悲憤交加,甚至恨的直咬牙!所以有必要談一次面向對象。

對象在生活中指的是女朋友或者男朋友,而在JavaScript裏說的通俗一點就是一個放了很多屬性與方法的集合,有很多的屬性與方法是一個對象最顯著的特點(可以粗暴的認為,但凡有屬性與方法的就是個對象)。JavaScript裏除了運算符、語句、表達式(這些都是基本語法,任何一門語言都得有基本的語法)以外,其它的都是對象或者說是某個對象身上的一部分,所以說js裏一切皆對象是有講究的。換句話說,我們在寫js的時候,其實都是用一些基本語法去操作對象

1、全局對象

它是JavaScript預定義的對象,作為JavaScript的全局函數和全局屬性的占位符,它是頂層對象,由宿主環境決定類型1.1、網頁裏為window this===window; //true

1.2、node裏為Global 它身上的屬性或方法可以直接使用,不用指定所屬對象。它有構造函數但無法實例化

window.constructor===Window; //truewindow instanceof Window; //truenew Window(); //報錯

2、內置對象

ECMAScript自己定義的對象,每個對象都有一個自己對應的構造函數

Object.prototype.constructor===Object; //trueArray.prototype.constructor===Array; //trueFunction.prototype.constructor==Function; //true

每個內置對象都是全局對象的一個屬性(內置對象都是全局對象的兒子)

window.Object===Object;

//truewindow.Array===Array;

//truewindow.Function==Function; //true

內置對象分類 Object、Number、String、Boolean、Array、Math、Date、JSON、RegExp、Function...

內置對象之間也有繼承關系,所有內置對象中Object是絕對的大哥,其它對象都 會繼承它原型裏的屬性與方法

Number.prototype.proto===Object.prototype; //trueString.prototype.proto

===Object.prototype; //trueBoolean.prototype.proto===Object.prototype; //trueArray.prototype.proto===Object.prototype; //trueFunction.prototype.proto===Object.prototype;//true

構造函數依然是個函數,用來生成對象。所有的對象都是由構造函數創建的,實力就是對象 由構造函數生成 平時用的實際的東西都是實例(獲取的DOM元素、聲明的數組、聲明的函數、聲明的對象),有時候需要new關鍵字生成(不是絕對的)

面向對象還包含很多東西,比如繼承,原型等等,就不細說了,需要更深入了解的可以上網去查。

web前端技術基礎課程詳解之JavaScript面向對象