JavaScript中的面向對象是個老生常談的話題,可是依然有不少小夥伴處於懵逼的狀態。面試時候最擔憂的就是被問到面向對象相關的內容,本身看過無數的資料,依然對面向對象百思不得其解。到底什麼是原型?什麼是構造函數?什麼是繼承。。。一提到這些概念那真是欲哭無淚、悲憤交加,甚至恨的直咬牙!因此有必要從新再談一次面向對象。同時我也但願經過這幾篇文章讓你對面向對象由恨生愛,再到愛恨交加,最後愛得死去活來!
各位老鐵們應該聽過一個詞叫「一切皆對象」
,而「面向對象」
中也帶了一個「對象」
,可見「對象」
這個詞很是重要。因此弄清楚 「對象」
是什麼尤其重要。javascript
對象在生活中指的是女友或者男友,而在JavaScript裏說的通俗一點就是一個放了不少屬性與方法的集合,有不少的屬性與方法是一個對象最顯著的特色(能夠粗暴的認爲,但凡是有屬性與方法的就是個對象)。JavaScript裏除了運算符、語句、表達式(這些都是基本語法,任何一門語言都得有基本的語法)之外,其它的都是對象或者說是某個對象身上的一部分,因此說js裏一切皆對象是有講究的。換句話說,咱們在寫js的時候,其實都是用一些基本語法去操做對象java
一、字符串node
'kaivon'.length; //6 屬性 'kaivon'.substring(2); //ivon 方法
二、數字面試
(12.25).toFixed(1); //12.3 方法
三、布爾值segmentfault
true.toString(); //true 方法
四、函數數組
const fn=function(){}; fn.name; //fn 屬性 fn.call(window); //方法
數組與對象想必就更不用解釋了函數
在JavaScript中我把對象分爲三類,全局對象、內置對象、自定義對象this
它是頂層對象,由宿主環境決定類型
一、網頁裏爲windowprototype
this===window; //true
二、node裏爲Globalcode
parseInt('12a'); //12 window.parseInt('12a); //12 String(12); //12 window.String(12); //12
window.constructor===Window; //true window instanceof Window; //true new Window(); //報錯
Object.prototype.constructor===Object; //true Array.prototype.constructor===Array; //true Function.prototype.constructor==Function; //true
window.Object===Object; //true window.Array===Array; //true window.Function==Function; //true
Object、Number、String、Boolean、Array、Math、Date、JSON、RegExp、Function...
全部內置對象請移步https://developer.mozilla.org...
Number.prototype.__proto__===Object.prototype; //true String.prototype.__proto__===Object.prototype; //true Boolean.prototype.__proto__===Object.prototype; //true Array.prototype.__proto__===Object.prototype; //true Function.prototype.__proto__===Object.prototype;//true
可能有些小夥伴在這裏會不理解,不要緊。這裏想讓你知道的是內置對象反正能跟Object扯上關係,後面的文章會詳細去說,咱們要放長線掉大魚。
面向對象的內容,後面文章詳細說
這篇文章主要介紹對象的概念,下一篇文章詳細介紹面向對象裏的相關概念