JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain)。
1、javascript原型
JS中每个函数都存在有一个原型对象属性prototype。并且所有函数的默认原型都是Object的实例。
2、javascript原型链
每个继承父函数的子函数的对象都包含一个内部属性_proto_。该属性包含一个指针,指向父函数的prototype。若父函数的原型对象的_proto_属性为再上一层函数。在此过程中就形成了原型链。
3、特点
原型链实现了继承。
扩展资料:
原型对象的应用场景
在实际项目开发中,我们都会使用别人开发的Javascript类库,如果我们发现当前代码库不存在我们需要的属性或方法,我们不能直接去修改别人的源代码,又不想为每个实例化对象单独定义相关属性或方法,那么不妨考虑使用原型对象进行扩展。
例1:使用原型对象扩展自定义对象
例2:扩展数组类(Array)的功能:
为每一个数组对象添加一个方法,可以查找某个元素的所在位置
var arr = [10,20,30,40,50,60];
arr.find(50); //50在数组元素中的索引值4