JavaScript中的面向?qū)ο笫莻€老生常談的話題财异,但是依然有很多小伙伴處于懵逼的狀態(tài)倘零。面試時候最擔心的就是被問到面向?qū)ο笙嚓P(guān)的內(nèi)容,自己看過無數(shù)的資料戳寸,依然對面向?qū)ο蟀偎疾坏闷浣獬适弧5降资裁词窃停渴裁词菢?gòu)造函數(shù)庆揩?什么是繼承俐东。。订晌。一提到這些概念那真是欲哭無淚虏辫、悲憤交加,甚至恨的直咬牙锈拨!所以有必要重新再談一次面向?qū)ο笃鲎M瑫r我也希望通過這幾篇文章讓你對面向?qū)ο笥珊奚鷲郏俚綈酆藿患樱詈髳鄣盟廊セ顏恚?/p>
對象
??各位老鐵們應該聽過一個詞叫“一切皆對象”
娄昆,而“面向?qū)ο蟆?/code>中也帶了一個
“對象”
佩微,可見“對象”
這個詞非常重要。所以弄清楚 “對象”
是什么尤為重要萌焰。
??對象在生活中指的是女朋友或者男朋友哺眯,而在JavaScript里說的通俗一點就是一個放了很多屬性與方法的集合,有很多的屬性與方法是一個對象最顯著的特點(可以粗暴的認為扒俯,但凡有屬性與方法的就是個對象)奶卓。JavaScript里除了運算符、語句撼玄、表達式(這些都是基本語法夺姑,任何一門語言都得有基本的語法)以外,其它的都是對象或者說是某個對象身上的一部分掌猛,所以說js里一切皆對象是有講究的盏浙。換句話說,我們在寫js的時候荔茬,其實都是用一些基本語法去操作對象
1废膘、字符串
'kaivon'.length; //6 屬性
'kaivon'.substring(2); //ivon 方法
2、數(shù)字
(12.25).toFixed(1); //12.3 方法
3慕蔚、布爾值
true.toString(); //true 方法
4殖卑、函數(shù)
const fn=function(){};
fn.name; //fn 屬性
fn.call(window); //方法
數(shù)組與對象想必就更不用解釋了
對象分類
在JavaScript中我把對象分為三類,全局對象坊萝、內(nèi)置對象孵稽、自定義對象
1、全局對象
它是JavaScript預定義的對象十偶,作為JavaScript的全局函數(shù)和全局屬性的占位符
-
它是頂層對象菩鲜,由宿主環(huán)境決定類型
1、網(wǎng)頁里為windowthis===window; //true
2惦积、node里為Global
它身上的屬性或方法可以直接使用接校,不用指定所屬對象
parseInt('12a'); //12
window.parseInt('12a); //12
String(12); //12
window.String(12); //12
- 它有構(gòu)造函數(shù)但無法實例化
window.constructor===Window; //true
window instanceof Window; //true
new Window(); //報錯
<br />
2、內(nèi)置對象
- ECMAScript自己定義的對象狮崩,每個對象都有一個自己對應的構(gòu)造函數(shù)
Object.prototype.constructor===Object; //true
Array.prototype.constructor===Array; //true
Function.prototype.constructor==Function; //true
- 每個內(nèi)置對象都是全局對象的一個屬性(內(nèi)置對象都是全局對象的兒子)
window.Object===Object; //true
window.Array===Array; //true
window.Function==Function; //true
內(nèi)置對象分類
Object蛛勉、Number、String睦柴、Boolean诽凌、Array、Math坦敌、Date侣诵、JSON痢法、RegExp、Function...
所有內(nèi)置對象請移步https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects內(nèi)置對象之間也有繼承關(guān)系杜顺,所有內(nèi)置對象中Object是絕對的大哥财搁,其它對象都會繼承它原型里的屬性與方法
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
可能有些小伙伴在這里會不理解,沒關(guān)系躬络。這里想讓你知道的是內(nèi)置對象反正能跟Object扯上關(guān)系尖奔,后面的文章會詳細去說,我們要放長線掉大魚穷当。
3越锈、自定義對象
面向?qū)ο蟮膬?nèi)容,后面文章詳細說
這篇文章主要介紹對象的概念膘滨,下篇文章詳細介紹面向?qū)ο罄锏南嚓P(guān)概念