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,这个属性对应着一个对象,这个对象就是原型对象
②如果函数作为普通的函数调用时,prototype没有任何作用
③当函数以构造函数形式调用时,它所创建的对象中都会有隐含的属性,指向该构造函数的原型对象,我们可以用__proto__来访问该属性。
④原型对象就相当于公共的区域,所有同一个类的实例都可以到这个原型对象,我们可以将对象中共有的内容统一设置到原型对象中
⑤当我们访问对象的一个属性或方法时,它会先在对象自身中寻找,如果有则直接使用,如果没有没有则会去原型对象中寻找,如果找到则直接使用,直到找Object,Object的原型没有原型,如果最后没有找到,则返回undefind
①当我们直接在页面中打印一个对象时,实际是输出对象的toString()方法的返回值,可以自行更改toString()方法的返回值,
在JavaScript中,prototype对象是实现面向对象的一个重要机制。每个函数就是一个对象(Function),函数对象都有一个子对象prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。1、该对象被类所引用,只有函数对象才可引用;
2、在new实例化后,其成员被实例化,实例对象方可调用。
同时,函数是一个对象,函数对象若直接声明成员,不用被实例化即可调用。