JS高级部分回顾

1、面向对象 面向过程

面向过程是分析出解决问题所需要的步骤,案后一步一步解决。

面向对象是把事情分成一个一个对象,对象之间分工合作实现需求。三个特性:继承性、封装性、多态性。

2、严格模式

(1)严格模式下全局作用域中函数的this是undefined

(2)在全局作用域函数中this指向window对象

(3)以前构造函数时不加new也可以调用,当普通函数,this指向全局对象

(4)严格模式下,如果构造函数不加new调用,this会报错

(5)new实例化的构造函数指向创建的对象实例

(6)定时器this还是指向window

(7)事件、对象还是指向调用者

3、什么是实例属性?什么是静态属性?

实例属性挂载到实例化对象身上。静态属性直接挂载到静态函数上。

(1)promise的静态属性

Promise.all

Promise.race

Promise.reject

Promise.resolve

(2)super的作用

super把父类的属性继承过来并把子类构造函数的this指向实例化对象

super.sing()子类可以调用父类的方法

4、new的步骤

(1)内存中创建一个空对象

(2)将这个空对象的proto成员指向了构造函数对象的prototype成员对象

(3)将构造函数对象this指针替换成空对象,然后再调用构造函数,于是构造函数的this就指向了新的空对象,并且会往实例化对象身上挂载方法

(4)返回实例化对象

5、什么是原型链

 

 

6、继承(实例属性、原型方法)

(1)在子类函数里面调用父类方法并改变this指向

Parent.call(this)

bind可以改变this指向,返回的是新的 拷贝的函数

call改变this指向,返回修改this指向的函数

apply

(2)把实例化对象的propto指向构造函数的prototype,再把父的构造函数的proptotype通过object.create传入

Object.create的作用

首先可以创建一个空对象,创建出来的空对象的proto属性指向传入的函数

  <script>
    function Parent(){
      this.name='hh'
    }

    Parent.prototype.sing=function(){
      console.log('uuuuuuuu');
    }

    function Child(){
      Parent.call(this)
    }

    Child.prototype=Object.create(Parent.prototype)
    Child.prototype.getAge=function(){}
    Child.prototype.constructor=Child

    const child=new Child()
    console.log(child);

  </script>

7、数组方法

8、object.defineProperty

9、高阶函数--函数作为参数传递或者函数作为另一个函数的返回值

(1)函数是词法作用域,可以访问的参数与函数定义位置有关,和调用无关

(2)闭包

(3)递归

(4)浅拷贝和深拷贝

10、let const

都是块级作用域,都不存在变量提升、当是简单数据类型时,不可以更改,当时复杂数据类型时,在不改变地址的情况下const可以修改值

11、箭头函数

12、set构造函数

git地址

Weldon0/js-advanced - Gitee.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值