• 487 函数的三种角色:普通函数,构造函数(类),普通对象,原型链清明上河图


    滴滴考察原型、原型链面试题

    Function.prototype.a = () => {
        console.log(1)
    }
    Object.prototype.b = () => {
        console.log(2)
    }
    function A () {}
    const a = new A()
    a.a() // 报错
    a.b() // 2
    A.a() // 1
    

    一、函数的三种角色

    * 函数数据类型:

    * 1. 普通函数

    * 2. 类(内置类 OR 自定义类)

    * 对象数据类型:

    * 1. {}普通对象 []数组对象 /^$/正则对象 日期对象 Math数学函数对象 arguments等类数组对象 HTMLCollection/NodeList元素或者节点集合类数组对象...

    * 2. 实例也是对象数据类型的

    * 3. 类的prototype也是对象数据类型的(Function.prototype除外,它是一个匿名空函数)

    * 4. 函数也是对象

    *

    * ======================================

    *

    * 函数有三种角色

    * 1. 普通函数

    * + 形参、实参、ARGUMENTS、RETURN、箭头函数

    * + 私有作用域(栈内存、执行上下文)

    * + 形参赋值 & 变量提升

    * + 作用域链

    * + 栈内存的释放和不释放(闭包)

    * + ...

    *

    * 2. 构造函数(类)

    * + 类和实例

    * + prototype 和 __proto__ 原型和原型链

    * + instanceof

    * + constructor

    * + hasOwnProperty

    * + ...

    *

    * 3. 普通对象

    * + 它是由键值对组成的

    * + ...

    * 函数中的THIS也是重要的内容

        function Fn(n, m) {
            this.x = n + m;
            this.y = n - m;
            let total = n * m;
            return total;
        }
    
        Fn.prototype.say = function () {
            console.log('SAY');
        }
    
        // => 普通函数
        let total = Fn(20, 10);
        console.log(total) // 200
    
        // => 构造函数(类和实例)
        let f = new Fn(20, 10);
        console.log(f) // Fn {x: 30, y: 10}
    
        // => 普通对象
        Fn.total = 1000;
        console.log(Fn.total) // 1000
    

  • 相关阅读:
    python取一个字符串中最多出现次数的词
    python openpyxl 操作 excel
    微信公众平台开发
    Oracle
    微信公众平台开发
    微信公众平台开发
    Html 转义字符那些事儿
    Linq DataTable表连接
    使用WeUI+JS 的label包含input触发两次的问题
    Html 图片上传
  • 原文地址:https://www.cnblogs.com/jianjie/p/13201524.html
Copyright © 2020-2023  润新知