javascript自我拙見

在JavaScript的世界里,函數(shù)是一等公民,設(shè)計模式是原型鏈繼承,何解?

ok,來概括一下吧;
只要是一門語言,那就會有自帶的函數(shù)以及對象;
JavaScript數(shù)據(jù)類型有7種:null, undefined, boolean, number, string, symbol, object.(沒錯,全是小寫的,不信用typeof檢測);\(^-^)/
前面6種合起來稱為原始類型,原始類型就沒什么可講的。


重頭戲:object類型
其實吧,個人感覺可以把內(nèi)置的object全部當成是構(gòu)造函數(shù)!?。?br> 聽我娓娓道來;
其實關(guān)于object類型,內(nèi)置的只有兩個構(gòu)造函數(shù),就是
(其實只有一個,因為Function的__proto__的__proto__指向的是Object,說明Funtion也是Object的實例)

//首先是Funtion構(gòu)造函數(shù)
function Funtion(...arg){
//下面是一些Function構(gòu)造函數(shù)的自身屬性,以便直接使用Function.**語法使用,打印一下發(fā)現(xiàn)其實Function也沒有什么自身屬性。。。
***
}

//下面就是原型設(shè)計模式的體現(xiàn)了
Function.prototype = {
constructor: Fucntion,

//下面就是一些公用方法,繼承的時候用
***
}
***
//下面是Object構(gòu)造函數(shù),跟上面差不多
function Object(...arg){
//默認屬性
***
}

Object.prototype = {
//下面是原型方法,繼承的時候用
constructor: Object,     
***
}

就是這樣,然后所有自己定義的函數(shù)或者對象,其實都是他們兩個的實例,當然就會獲得這兩個構(gòu)造函數(shù)的自身屬性以及原型方法啦?。?!

當我們給新建的object或者function添加屬性的時候,有時候會用到getOwnPropertyNames(),這樣我們就可以獲取自身定義的屬性和方法啦?。。。ó斎贿€有好多自帶的屬性和方法,不一一列舉);

哦,還有其他幾種數(shù)據(jù)結(jié)構(gòu)

function Array(...arg){}
Array.prototype = {}

function Set(...arg){}
Set.prototype={}

都是差不多的意思,其實也可以把那幾個原始數(shù)據(jù)類型也可以算進去,當成構(gòu)造函數(shù)。

function Number(...arg){}
Number.prototype={};

function String(...arg){}
String.prototype={};

function Symbol(...arg){}
Symbol.prototype={};

function Boolean(...arg){}
Boolean.prototype={}
//undefined, null是沒有的

其實這樣看來,那個es6,es7什么的,就是在原來基礎(chǔ)上面加了幾個官方自己寫的構(gòu)造函數(shù)啊。

好像除了undefined和null之外,所有的數(shù)據(jù)類型,或者數(shù)據(jù)結(jié)構(gòu)都是通過構(gòu)造函數(shù)以及其原型來實現(xiàn)的,剛才發(fā)現(xiàn)Function是Object的實例(Function instanceof Object === true),Array是Function的實例(Array instanceof Function === true),所以O(shè)bject就是皇上啦,函數(shù)就是太子啦!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容