JavaScript中的面向對象是個老生常談的話題,但是依然有很多小伙伴處于懵逼的狀態。面試時候最擔心的就是被問到面向對象相關的內容,自己看過無數的資料,依然對面向對象百思不得其解。到底什么是原型?什么是構造函數?什么是繼承。。。一提到這些概念那真是欲哭無淚、悲憤交加,甚至恨的直咬牙!所以有必要重新再談一次面向對象。同時我也希望通過這幾篇文章讓你對面向對象由恨生愛,再到愛恨交加,最后愛得死去活來!
?
??各位老鐵們應該聽過一個詞叫“一切皆對象”
,而“面向對象”
中也帶了一個“對象”
,可見“對象”
這個詞非常重要。所以弄清楚 “對象”
是什么尤為重要。
??對象在生活中指的是女朋友或者男朋友,而在JavaScript里說的通俗一點就是一個放了很多屬性與方法的集合,有很多的屬性與方法是一個對象最顯著的特點(可以粗暴的認為,但凡有屬性與方法的就是個對象)。JavaScript里除了運算符、語句、表達式(這些都是基本語法,任何一門語言都得有基本的語法)以外,其它的都是對象或者說是某個對象身上的一部分,所以說js里一切皆對象是有講究的。換句話說,我們在寫js的時候,其實都是用一些基本語法去操作對象
?
1、字符串
'kaivon'.length; //6 屬性
'kaivon'.substring(2); //ivon 方法
?
2、數字
(12.25).toFixed(1); //12.3 方法
?
3、布爾值
true.toString(); //true 方法
?
4、函數
const fn=function(){};
fn.name; //fn 屬性
fn.call(window); //方法
數組與對象想必就更不用解釋了
?
?
?
在JavaScript中我把對象分為三類,全局對象、內置對象、自定義對象
?
?
?
它是頂層對象,由宿主環境決定類型
1、網頁里為window
this===window; //true
2、node里為Global
?
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...
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扯上關系,后面的文章會詳細去說,我們要放長線掉大魚。
?
?
面向對象的內容,后面文章詳細說
這篇文章主要介紹對象的概念,下篇文章詳細介紹面向對象里的相關概念
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。