美文网首页
函数的三种角色

函数的三种角色

作者: 空压机百科 | 来源:发表于2019-12-10 22:57 被阅读0次

    函数本身有自己的属性:
    1、length:0 形参的个数
    2、name:Fn 函数名
    3、prototype:类的原型,在原型上定义的方法是当前 Fn 这个类实例的公有方法
    4、__proto__:把函数当作一个普通对象,指向 Function 这个类的原型

    一个函数存在多面性:
    1、“普通函数”:它本身就是一个普通函数,执行的时候会形成私有作用域(闭包),形参赋值,预解释,代码执行,执行完成后栈内存销毁 / 不销毁
    2、“类”:它有自己的实例,也有一个 prototype 属性是自己的原型,它的实例都可以指向自己的原型
    3、“普通对象”:和 var obj = {} 中的 obj 一样,就是一个普通对象,它作为对象可以有一些自己的私有属性,也可以通过__proto__找到 Function.prototype
    但这三者没有必然关系,如下案例:

    function Fn(){
       var num = 10;
       this.x = 100;
    }
    Fn.prototype.getX = function(){
        console.log(this.x)
    }
    Fn.aaa = 1000
    var f = new Fn  // Fn中的this是f
    f.num = undefined 
    f.aaa = undefined
    var resulet = Fn()  // Fn中的this值window
    resulet = undefined
    Fn.aaa = 1000
    

    内存图:

    function Fn(){
       this.n = 100;
    }
    Fn.prototype.getN = function(){
        console.log(this.n);
    }
    Fn.AA = 200;
    var f =   new Fn
    
    原型图

    Function.prototype是函数数据类型的值,但是相关操作和之前的一摸一样。

    相关文章

      网友评论

          本文标题:函数的三种角色

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