js相关基础知识点
1、创建对象的三种方式:
1、 对象字面量创建对象:
a) 类型为Object
b) 缺点:当需要定义大量对象时,会出现大量的重复代码
2、 构造函数创建对象:
a) 本质上是一个函数,只不过函数被new关键字调用了
b) 特点:首字母大写,被new关键字调用
3、 工厂模式创建对象:
a) 缺点:1、使用工厂模式创建的对象类型一致Object
b) 2、相同的逻辑代码(函数)被保存到了不同的内存空间内,导致内存空间浪费
2、new关键字具体做了什么操作:
1、在内存中创建了一个新的对象(空对象)
2、这个对象内部的prototype属性会被赋值为改构造函数的prototype属性
3、构造函数内部的this,会指向创建出来的新对象
4、执行函数的内部代码
5、如果构造函数没有返回非空对象,则返回创建出来的新对象
3、构造函数中的this指向由构造函数所产生的实例对象
4、函数中的this指向函数的调用者
5、函数和方法的定义:
函数:如果一个对象的属性值为非函数,那么这个属性就称之为对象属性
方法:如果一个对象的属性值为函数类型,那么这个属性就称之为对象方法
6、实例对象的隐式原型属性指向其对应构造函数的原型对象
7、什么是原型链:
原型链是指在每个实例对象身上都有一个隐式原型属性,该隐式属性指向该对象对应的构造函数的原型对象,当寻找一个对象属性时,首先从自身进行查找,找到即返回,如果自身没有找到,该属性就会沿着__proto__查找对应的原型对象,直到原型链的最顶端,找到就返回,没有找到就返回undefined
**8、对象继承的三种方式:**原型链继承、构造函数继承、寄生组合式继承
9、原型链继承的弊端:
1、打印对象,所继承的属性是看不到的
2、创建出了两个对象,直接修改对象上属性是给本对象添加了一个新的属性,获取引用时,修改引用中的值会相互影响
3、在实现类的过程中没有传递参数
10、构造函数继承的弊端:
1、在什么情况下都会调用两次父类的构造函数
11、什么是寄生组合式继承:
让子类的原型对象=新创建的一个对象 并且 新创建的对象的原型是父类的原型
12、函数的this指向
1、在全局作用域中的this指向window
2、函数中的this指向函数的调用者
3、箭头函数中的this指向函数定义时作用域中的this指向
4、在事件中,this指向触发这个事件的对象(dom)
13、绑定this指向的几种方式:
1、默认绑定:全局环境中,this默认绑定到window
2、隐式绑定:一般地,被直接对象所包含的函数调用时,也称为方法调用,this隐式绑定到该直接对象。隐式丢失是指被隐式绑定的函数丢失绑定对象,从而默认绑定到window
3、显示绑定:通过call apply bind方法将对象绑定到this上,叫做显示绑定
4、new绑定:如果函数或者方法调用之前带有关键字new,他就构成构造函数调用,对于this绑定来说称为new绑定
14、改变函数内部this指向的三种方法以及区别:
Call():调用一个对象的一个方法,用另一个对象替换当前对象
Apply():调用一个对象的一个方法,用另一个对象替换当前对象
Bind():返回结果时函数,需要自己调用
区别:
Call和apply都是函数自动执行,bind需要手动调用
apply():调用一个对象的一个方法,用另一个对象替换当前对象
Bind():返回结果时函数,需要自己调用
区别:
Call和apply都是函数自动执行,bind需要手动调用