我的账户
猩码学苑

专注C++开发菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

康利20221124JS高级02

[复制链接]
智商不在服务区 发表于 2022-11-25 08:42:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、学习内容:

        闭包
                1. 闭包是一种跨作用域访问变量,形成闭包,闭包是一种作用域的体现
                2. 常见的闭包写法是:父函数嵌套子函数,子函数可以访问父函数的变量,把子函数返回或者挂载到window上
                作用
                        实现了早期的模块化开发,把所有的变量隐藏在内部,对外暴露统一的范围接口
                        作用:隐藏变量,避免全局污染(ES6自带模块化开发)
                优缺点
                        优点:隐藏了变量,避免了全局污染,实现了早期的模块化开发、
                        缺点:一旦形成了闭包,这个变量不会被内存释放,内存开销比较大,会造成内存泄漏,所以不建议过多的使用闭包
                闭包的标准写法
                        let r = (function () {
    let money = 500;
    function spendMoney() {
        console.log('money',money);
        money -= 100;
        return money;
    }
    return spendMoney;
})();
console.log(r()); // 400
console.log(r()); // 300
console.log(r()); // 200
// 每调用一次就会执行一次函数
                        ; (function () {
    let money = 500;
    function spendMoney() {
        console.log('money', money);
        money -= 100;
        return money;
    }
    window.$bibao = {
        // spendMoney:spendMoney,
        spendMoney // 简写
    }
})();
console.log(window.$bibao);
console.log(window.$bibao.spendMoney);
console.log(window.$bibao.spendMoney());
        面向对象思想
                面向过程pop
                        按照流程步骤,一步一步的走,实现功能,每一步都是亲力亲为
                        优点:对流程细节把控比较清晰
                        缺点:不适合大型的项目
                面向对象oop
                        从全局出发,把功能都封装到对象中然后要做什么就找什么对象,调用对象的方法
                        优点:适合大型项目,功能都封装在各个对象中
                        缺点:对细节把控不清晰
        类和构造函数的关系
                1. 概念:构造函数在js中,可以称为类
                2. js内置的构造函数有:Array、String、Number、Function、Object、Date、Boolean、Error、RegExp....
                3. 他们的作用:造出各种各样的数据。造:new出来,实例化出来。new出各种实例对象,得到各种类型的数据
                4. 如果js内置没有这个构造函数,自己怎么样发明一个?如何自己写出一个构造函数
                实例对象:具体的一个对象
                // arr实例对象
// Array构造函数
const arr = new Array();
// 字面量就是一种语法糖:真正执行的过程就是new的过程,所有的数组都是底层new出来的
const arr1 = [];
const o1 = new Object();
const o2 = {};
const n1 = new Number();
// 这个过程是基本数据类型:赋值是通过valueOf
const n2 = 111;
// console.log(arr);
// console.log(arr1);
                // 类===构造函数:在ES5中相等
// 构造函数
// str.constructor === String;
// a.constructor === Boolean;
// fn.constructor === Function;
// 是构造函数,不是对象,是js的内置函数,内置的类都是大写开头的
// constructor--->构造函数
// 不是所有的对象都是类---undefined、null
        自定义构造函数的特点
                构造函数
                        // 构造函数
function Person(name, age) {
    this.name = name;
    this.age = age;
    this.skill = function () {
        return '333'
    }
    // console.log('this', this);
    // this指向p1---实例对象
}
                实例对象
                        // 实例对象
let p1 = new Person('kl', 23);
let p2 = new Person('kl', 213);
// console.log('p1', p1);
// console.log(p1.name);
                特点
                        1.构造函数首字母大写
                        2.属性和方法都是挂载在this上
                        3.this指向实例对象
                         4.没有返回值
                        5.使用new进行调用
        new的过程发生了什么?
                1. 首先会创建一个空对象
                2. this指向这个实例对象
                3. 指向这个构造函数的倒霉---这里边的代码都走一遍
                4. 自动返回一个this(this指向实例对象)

回复

使用道具 举报

关注0

粉丝0

帖子68

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注C++菁英教育

客服电话:18009298968

客服时间:9:00-21:00

猩码学苑 - 专注C++开发菁英教育!( 陕ICP备2025058934号-1 )

版权所有 © 陕西菁英数字科技有限公司 2023-2026