菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育

标题: 程灿-20221124-JS高级02 [打印本页]

作者: Cc7507    时间: 2023-1-7 09:16
标题: 程灿-20221124-JS高级02
JS高级---day021.闭包1.1闭包的作用
实现了早期的模块化开发,把所有的变量隐藏在内部,对外暴露统一的访问接口
隐藏变量,避免全局污染---[ES6自带模块化开发]
1.2闭包的优缺点
优点:隐藏变量,避免全局污染,实现早期的模块化开发
缺点:一旦形成了闭包,这个变量不会被内存释放,内存开销较大,不会被垃圾回收机制回收,会造成内存泄漏,不建议过多使用闭包
2.面向对象思想2.1面向过程POP
按照流程步骤,一步一步的走,实现功能,每一步都是亲历亲为
优点:对流程细节把控清晰
缺点:不适合大型项目
2.2面向对象OOP
从全局出来,那所用功能都封装在对象中,然后要做什么就找什么对象,调用对象的方法
优点:所有的功能都封装在对象中,适合大型项目
缺点:对细节把控不清晰
3.类和构造函数3.1概念
1.构造函数再js中,可以成为类
2.js内置的构造函数:Array、String、Number、Function、Object、Date、Boolean、Error....
3.作用:造出各种各样类型的数据,造:new处理,实例化出来,new各种实例对象,得到各种类型的数据
4.如果js内置没有这个构造函数,自己如何创建一个构造函数
3.2特点
1、构造函数首字母大写2、属性和方法都挂在this上3、没有返回值4、使用new调用
3.3类和实例对象的关系        var str = 'abc';
        console.log(str.constructor);

        const a = true;
        console.log(a.constructor);

        //构造函数
        // str.constructor === String;
        // a.constructor === Boolean;

        // 字面量:
        let str1 = 'abcd';
        let flag1 = true;

        // 真相:
        let str2 = new String('abcd').valueOf();
        let flag2 = new Boolean(true).valueOf();

在ES5中类===构造函数   
字面量的数据类型都是底层通过new实现的
赋值通过valueof

constructor===构造函数
构造函数,不是对象
内置的类都是大写开头的
不是所有的数据类型都是类===undefined null
3.3new过程发生了什么---[面试题]1.首先会创建一个空对象
2.this指向实例对象
3.执行构造函数的代码---这里面的代码全部走一遍
4.自动返回了this---指向实例对象






欢迎光临 菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育 (http://www.xingmaxueyuan.com/) Powered by Discuz! X3.4