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

函数的三种角色

作者: 阿九是只大胖喵 | 来源:发表于2017-03-04 12:19 被阅读0次

    函数本身也会有一些自己的属性:
    -> length: 形参的个数
    -> name: 函数名
    -> prototype: 类的原型,在原型定义的方法都是当前Fn这个类实例的公有方法
    -> __proto__: 把函数当做一个普通对象,指向Function这个类的原型

    函数在整个JavaScript中是最复杂,也是最重要的知识:
    一个函数存在多面性:
    -> 它本身就是一个普通的函数,执行的时候形成私有作用域(闭包),形参赋值,预解释,代码执行,执行完成后栈内存销毁或者不销毁。
    -> "类": 它有自己的实例,也有一个叫做prototype的属性,是自己的原型,它的实例都可以指向自己的原型。
    -> "普通对象": 和var obj = {}; 中的obj一样,就是一个普通的对象,它作为对象可以有一些自己的私有属性,也可以通过proto找到Function.prototype。
    这三者之间是没有必然关系的。

    原型链完整版.png
        function Fn() {
            var num = 500;
            this.x = 100;
        }
        Fn.prototype.getX = function () {
            console.log(this.x);
        };
        Fn.aaa = 1000;
        var f = new Fn();
    
        console.log(f.num); // undefined, this -> f
        console.log(f.aaa); // undefined
        var res = Fn();
        console.log(res); // undefined, this -> window
        console.log(Fn.aaa); // -> 1000
    

    相关文章

      网友评论

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

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