美文网首页
javascript自我拙见

javascript自我拙见

作者: 游击队员张铁砣 | 来源:发表于2019-06-25 23:58 被阅读0次

    在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自我拙见

          本文链接:https://www.haomeiwen.com/subject/zgefcctx.html