javascript原型,原型链 有什么特点

JavaScript05

javascript原型,原型链 有什么特点,第1张

javascript原型,原型链特点:原型链实现了继承。

JS中每个函数都存在有一个原型对象属性prototype。并且所有函数的默认原型都是Object的实例。每个继承父函数的子函数的对象都包含一个内部属性proto。该属性包含一个指针,指向父函数的prototype。若父函数的原型对象的_proto_属性为再上一层函数。在此过程中就形成了原型链。

原型链的作用是用来实现继承,比如我们新建一个数组,数组的方法就是从数组的原型上继承而来的。

var arr = []

arr.map === Array.prototype.map //arr.map

是从arr.__proto__上继承下来的,arr.__proto__也就是Array.prototype。

扩展资料:

1.JS中每个函数都存在有一个原型对象属性prototype。并且所有函数的默认原型都是Object的实例。

2.每个继承父函数的子函数的对象都包含一个内部属性_proto_。该属性包含一个指针,指向父函数的prototype。若父函数的原型对象的_proto_属性为再上一层函数。在此过程中就形成了原型链。

3.原型链实现了继承。原型链存在两个问题:a 包含引用类型值的原型属性会被所有实例共享。b 在创建子类型时,无法向超类型的构造函数中传递参数。

参考资料:百度百科-javascript

prototype 翻译过来是原型的意思,在 js 中特指对象的原型

prototype 对象是 js 实现面向对象的一个重要机制

每个函数也是一个对象(划重点),他们对应的类是 function ,每个函数对象都有一个子对象 prototype

prototype 代表了该函数的原型,还表示了一个类的属性的集合

当用 new 来生成一个对象时, prototype 对象的属性将会成为实例化的对象的属性

使用场景:

我们把所有方法都放在一个函数内部,每一次通过 new 一个对象的时候,新创建的对象都会对类的 this 上的属性进行复制,所以这些新创建的对象都会有自己的一套方法,这样做对内存消耗很大,我们可以通过原型的方式去处理