你不知道的JavaScript(上卷)
1.闭包
1.1 模块闭包的特征:
①为创建内部作用域而调用了一个包装函数
②包装函数的返回值必须包含至少一个对内部函数的引用,这样就会创建涵盖整个包装函数内部作用域的闭包。
2.this
2.1 this的定义:
①this是包含它的函数作为方法被调用时所属的对象。在全局环境中,this 指向全局对象,在浏览器中,它就是 window 对象。
②如果函数作为对象的一个方法时,并且作为对象的一个方法被调用时,函数中的this指向这个上一级对象。
③作为构造函数调用
④call 和 apply 方法调用 - - fn.call(obj, x) fn.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 原型链继承

浙公网安备 33010602011771号