js原型链
所谓言行链就是如果构造函数或对象a,a的原型指向构造函数或对象b,b的原型再指向构造函数或对象c,以此类推,最终的构造函数或对象的原乡指向object的原型.由此形成一条链状结构,被称之为原型链
js原型链示例代码:
// 原型链function a(){ this.a = 'a';}// 通过构造函数创建对象var a = new a();function b(){ this.b = 'b';}// 将b的原型指向对象ab.prototype = a;// 通过构造函数创建对象var b = new b();console.log(b.b);// bconsole.log(b.a);// afunction c(){ this.c = 'c';}// 将c的原型指向对象bc.prototype = b;// 通过构造函数创建对象var c = new c();console.log(c.c);// cconsole.log(c.b);// bconsole.log(c.a);// a
js原型链代码分析图:
只继承于原型
示例代码:
// 原型链function a(){ // 将自有属性改写为原型属性 // this.a = 'a';}a.prototype.a = 'a';function b(){ // this.b = 'b';}// 将b的原型指向b.prototype = a.prototype;b.prototype.b = 'b';/*b.prototype = { b : 'b'}*/function c(){ this.c = 'c';}// 将c的原型指向c.prototype = b.prototype;var c = new c();console.log(c.c);// cconsole.log(c.b);console.log(c.a);// a
js原型链继承实现的问题
1、原型链实际上是在多个构造函数或对象之间共享属性和方法
2、常见子类的对象时,不能像父级的构造函数传递任何参数
注意: 在实际开发中很少会单独使用原型链
示例代码:
// 原型链function a(){ // 将自有属性改写为原型属性 // this.a = 'a';}a.prototype.a = 'a';function b(){ // this.b = 'b';}// 将b的原型指向b.prototype = a.prototype;b.prototype.b = 'b';function c(){ // this.c = 'c';}// 将c的原型指向c.prototype = b.prototype;c.prototype.c = 'c';var c = new c();console.log(c.c);// 调用结果为 cconsole.log(c.b);// 调用结果为 bconsole.log(c.a);// 调用结果为 avar a = new a();console.log(a.a);// 调用结果为 aconsole.log(a.b);// 调用结果为 bconsole.log(a.c);// 调用结果为 cvar b = new b();console.log(b.a);// 调用结果为 aconsole.log(b.b);// 调用结果为 bconsole.log(b.c);// 调用结果为 c
相关推荐:
js原型和原型链详解
js核心系列:浅谈原型对象和原型链
以上就是js继承之js原型和原型链的详细介绍的详细内容。
