你不知道的JavaScript(上卷)

1.闭包

  1.1 模块闭包的特征:

    ①为创建内部作用域而调用了一个包装函数

    ②包装函数的返回值必须包含至少一个对内部函数的引用,这样就会创建涵盖整个包装函数内部作用域的闭包。

2.this

  2.1 this的定义: 

    ①this是包含它的函数作为方法被调用时所属的对象。在全局环境中,this 指向全局对象,在浏览器中,它就是 window 对象。

    ②如果函数作为对象的一个方法时,并且作为对象的一个方法被调用时,函数中的this指向这个上一级对象。

    ③作为构造函数调用

    ④call 和 apply 方法调用 - - fn.call(obj, xfn.apply(obj, [x])

    ⑤bind 方法调用 - - fn.bind(obj1)

    ⑥箭头函数中this指向:箭头函数的this看外层的是否有函数,如果有,外层函数的this就是内部箭头函数的this,如果没有,则this是window。

3.class

  3.1 为什么要用calss?

    通过class类来创建对象,使得开发者不必写重复的代码,以达到代码复用的目的。它基于的逻辑是,两个或多个对象的结构功能类似,可以抽象出一个模板

  3.2 constructor构造函数

    constructor方法是一个特殊的方法,用来创建并初始化一个对象。在一个class中只能有一个命名为constructor的特殊方法,如果包含多个将会报错。

    constructor中可以通过super关键字,调用父类的constructor方法。

  3.3 super()关键字

    关键字super用于调用父类相应的方法,这是相较于原型继承的一个好处

  3.4 类继承

  3.5 寄生继承

4.原型

  4.1 prototype    

    每一个对象都包含一个__proto__,指向这个的对象的“原型”。每一个函数都包含一个prototype.,函数也是对象。

    function Foo(){...}

    var f1 = new Foo()

    f1. __proto__ === Foo.prototype

  4.2 原型链继承

posted @ 2022-03-05 12:04  Rayyang  阅读(108)  评论(0)    收藏  举报