js高级
今日所学摘要:
①js的预编译:js很特别,在js代码执行前会进行预编译,预编译的结果就是——变量提升。如下图所示:
②js中的arguments,俗称伪数组,不是真正的数组,但可以像数组一样使用,里面存入的是传入函数的形参。
③for...in用法:可以用来遍历数组和对象,遍历对象居多。对象拷贝时注意用hasOwnProperty方法
④prototype原型:分为两类:(1)类里面有prototype属性,可以用 类名.prototype.方法名 来为这个类添加一个原型方法,每当为这个类创建一个对象时,该原型方法便存在于该对象的原型对象中。(2)对象里面有__proto__属性,可以为对象添加原型方法和属性,并且这种方式是共享的,成为原型共享,即同一个类的实例,其中一个添加了原型属性和方法,该类的其他实例也会存在。
⑤js中的继承:分为假继承和真继承
假继承:用call()或apply()方法改变this指向,获取父类中的构造函数,再运用for...in循环将父类的原型对象拷贝给子类
真继承:第一步仍然是用call或apply改变this指向,第二部采用 子类.prototype =Object.create(父类.prototype)
⑥js闭包,概念:函数内部可以调用函数外部的变量。
今天大概就是这些内容,明天继续加油!!!