javascript中的对象(原型,原型链)
什么是原型?
原型是JavaScript中的继承的基础,JavaScript的继承就是基于原型的继承。
在JavaScript中,创建的函数对象都有一个prototype属性,它指向的就是这个函数的原型对象。而这个原型对象会有一个默认的属性constructor指向这个函数对象。
原型对象的生成
创建一个函数时浏览器会在内存中创建一个对象,这个对象就是这个函数的原型对象。
什么是原型链?
JavaScript中的每个对象都有一个prototype属性,我们称之为原型,而原型的值也是一个对象,因此它也有自己的原型,这样就串联起来了一条原型链,原型链的链头是object,它的prototype比较特殊,值为null。
原型链的作用
JavaScript的继承依赖于原型链。函数A的原型属性(prototype property)是一个对象,当这个函数被用作构造函数来创建实例时,该函数的原型属性将被作为原型赋值给所有对象实例,比如我们新建一个数组,数组的方法便从数组的原型上继承而来。
当访问对象的一个属性时, 首先查找对象本身, 找到则返回; 若未找到, 则继续查找其原型对象的属性(如果还找不到实际上还会沿着原型链向上查找, 直至到根). 只要没有被覆盖的话, 对象原型的属性就能在所有的实例中找到,若整个原型链未找到则返回undefined;