在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ù)!<さ印拟糕!
聽我娓娓道來;
其實關(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ù)的自身屬性以及原型方法啦!Q窖ⅰ美浦!
當我們給新建的object或者function添加屬性的時候,有時候會用到getOwnPropertyNames()十艾,這樣我們就可以獲取自身定義的屬性和方法啦5执!M怠(當然還有好多自帶的屬性和方法荤牍,不一一列舉);
哦庆冕,還有其他幾種數(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ù)啊惭载。