javascript自我拙见

在JavaScript的世界里,函数是一等公民,设计模式是原型链继承,何解?

ok,来概括一下吧;
只要是一门语言,那就会有自带的函数以及对象;
JavaScript数据类型有7种:null, undefined, boolean, number, string, symbol, object.(没错,全是小写的,不信用typeof检测);\(^-^)/
前面6种合起来称为原始类型,原始类型就没什么可讲的。


重头戏:object类型
其实吧,个人感觉可以把内置的object全部当成是构造函数!!!
听我娓娓道来;
其实关于object类型,内置的只有两个构造函数,就是
(其实只有一个,因为Function的__proto__的__proto__指向的是Object,说明Funtion也是Object的实例)

//首先是Funtion构造函数
function Funtion(...arg){
//下面是一些Function构造函数的自身属性,以便直接使用Function.**语法使用,打印一下发现其实Function也没有什么自身属性。。。
***
}

//下面就是原型设计模式的体现了
Function.prototype = {
constructor: Fucntion,

//下面就是一些公用方法,继承的时候用
***
}
***
//下面是Object构造函数,跟上面差不多
function Object(...arg){
//默认属性
***
}

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

就是这样,然后所有自己定义的函数或者对象,其实都是他们两个的实例,当然就会获得这两个构造函数的自身属性以及原型方法啦!!!

当我们给新建的object或者function添加属性的时候,有时候会用到getOwnPropertyNames(),这样我们就可以获取自身定义的属性和方法啦!!!(当然还有好多自带的属性和方法,不一一列举);

哦,还有其他几种数据结构

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

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

都是差不多的意思,其实也可以把那几个原始数据类型也可以算进去,当成构造函数。

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

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

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

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

其实这样看来,那个es6,es7什么的,就是在原来基础上面加了几个官方自己写的构造函数啊。

好像除了undefined和null之外,所有的数据类型,或者数据结构都是通过构造函数以及其原型来实现的,刚才发现Function是Object的实例(Function instanceof Object === true),Array是Function的实例(Array instanceof Function === true),所以Object就是皇上啦,函数就是太子啦!

你可能感兴趣的:(javascript自我拙见)