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

web前端技術基礎課程詳解之JavaScript面向物件

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關鍵字生成(不是絕對的)

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