一、什么是原型链
在javascript中每个对象都会有一个__proto__属性,
当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,
那么它就会去__proto__里去找这个属性,
这个__proto__又会有自己的__proto__,于是就这样一直找下去,
这就是原型链的概念。
二、原型链的最终指向 :null
三、原型链的查找规则 :
按照原型链依次往下找,有就返回,没有就undefined或者报错
四、用字面量方法创建原型带来的问题 :
加上constructor属性即可
一、call方法
1、可以进行函数的调用
2、可以改变this的指向,如果没有参数,this指向全局
3、可以改变this的指向,如果有一个参数,this指向该参数
4、可以改变this的指向,如果有多个参数,this指向第一个参数,其他参数都是参数列表
二、apply()方法
1、可以进行函数的调用
2、可以改变this的指向,如果没有参数,this指向全局
3、可以改变this的指向,如果有一个参数,this指向该参数
4、可以改变this的指向,如果有多个参数,this指向第一个参数,其他参数都是数组
三、bind()方法
1、不可以进行函数的调用
2、可以改变this的指向,如果没有参数,this指向全局
3、可以改变this的指向,如果有一个参数,this指向该参数
js继承 :原型继承 构造继承(call方法继承) 拷贝继承
new关键字的作用
1、创建一个新对象,返回一个新对象
2、改变构造函数中this指向,指向实例化对象
new关键字的底层原理
1、var p1 = {} 创建了一个对象
2、p1.__proto__ == Person.prototype p1的指针指向构造函数的原型,原型对象中的属性和方法可以被继承
3、Person.call(p1) 调用函数 改变this指向