前面内容的复习 + Object.defineProperty() + 函数(this,严格模式,高阶函数,闭包,递归,拷贝) -- 暑假Day6

本文深入探讨JavaScript中的函数进阶特性,包括this的指向、严格模式的使用、高阶函数的概念及应用,以及闭包的原理和实例。通过示例解释了如何在事件处理中保持this的正确指向,严格模式下变量声明和函数调用的变化,并展示了闭包在获取元素索引和对象属性访问中的关键作用。同时,介绍了浅拷贝的概念和Object.assign()的使用。
摘要由CSDN通过智能技术生成

  • Object.defineProperty();里面有三个属性,这个方法用于定义对象中新属性或修改原有属性,第一个参数是想要修改的对象的对象名,第二个参数是对象的新的属性名或者原有的属性名,第三个参数是一个对象,书写属性的参数,第三个对象里面的值如下
    在这里插入图片描述

图中的第二个属性其实就是属性值可不可以被修改的意思

函数进阶

可以利用new Function(‘参数1’, ‘参数2’, ‘函数体’)来定义函数
参数可以是多个

    var f = new Function('a', 'b', 'console.log(a + b)');
    f(1, 2);

里面内容必须要以字符串格式书写

所有函数都是Function的实例,函数也属于对象
在这里插入图片描述

函数里面的this指向

在这里插入图片描述

其实还是谁调用就指向谁

btn.onclick = function () {
    this.disabled = true;
    setTimeout(function () {//this指向window
        this.disabled = false; 
    }.bind(this) ,3000)//bind里面的this指向btn
}

严格模式

在es5之后出现了严格模式,ie10及以上有严格模式

  • 保留字不可以作为变量名
  • 变量必须声明
  • 不能随意删除已经定义好的变量
  • 全局作用域中函数指向undefined
  • 如果构造函数不加new调用,this会报错
  • 定时器里面的this指向的还是window
  • 函数里面不能有一样的参数
  • 不允许在非函数的代码块里面书写函数
  1. 为脚本开启严格模式
    ‘use strict’;
    在所有代码前面书写

  2. 为某个函数开启严格模式
    在想开启的函数内部的顶端写上’use strict’;

高阶函数

函数里面接受的参数或者返回值是另一个函数,那么最开始的函数叫做高阶函数

callback&&callback();回调函数的执行

闭包

闭包是指有权访问另一个函数作用域中的变量的函数(其实也是函数)
简单理解就是一个作用域可以访问另一个函数内部的局部变量

function fun() {
    var num = 10;

    function fu() {
        console.log(num);
    }
    fu();
}

fun();

在这里插入图片描述

图中的closure就表示闭包

主要作用:延伸了变量的作用

用闭包获取当前li的索引号

var lis = document.querySelectorAll('li');

for(var i = 0; i < lis.length; i ++){
    (function (x) {
        lis[x].onclick = function () {
            console.log(x);
        }
    }(i));
}
var name = 'The Window';
var obj = {
    name : 'My Object',
    getName () {
        let that = this;
        return function () {
            console.log(that.name);
        }
    } 
}
obj.getName()();//My Object

这个里面涉及了闭包,哪怕that的作用域不在全局,但这样返回造成闭包导致仍然可以访问的到that

递归

一个函数在内部自己调用自己

拷贝

浅拷贝

浅拷贝es6中有一个语法糖,就是Object.assign(target, origin);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值