js中的继承
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>2</title> </head> <body> <script> function SuperType(){ } SuperType.prototype.arr1 = [1,2,3,4,5]; SuperType.prototype.arr2 = [4,5,6]; function SubType(){ } SubType.prototype = new SuperType(); SubType.prototype.arr2 = [7,8,9] var i0 = new SuperType(); alert(i0.arr1);//1,2,3,4,5 var i1 = new SubType(); i1.arr1.push(7); i1.arr2 = [2,3,4]; alert(i1.arr1);//1,2,3,4,5,7 alert(i1.arr2);//2,3,4 alert(i0.arr1);//1,2,3,4,5,7 此时i0的arr1属性值也对应发生变化 var i2 = new SuperType(); alert(i2.arr1);//1,2,3,4,5,7 alert(i2.arr2);//4,5,6 var i3 = new SubType(); alert(i3.arr1);//1,2,3,4,5,7 alert(i3.arr2);//7,8,9 alert(i3.constructor);//function SuperType(){} /* 子类实例对象寻找属性的步骤:1.自身的实例属性;2.子类构造函数原型对象上的属性;3.父类构造函数原型对象上的属性; 上述步骤也说明了,借用构造函数的方式实现的继承的原理:子类的原型对象是父类的一个实例对象,也就是说子类的原型对象中的[[prototype]]指向的是父类的原型对象。所以说最后的子类实例对象的constructor弹出的是父类构造函数 注意:如果对父类构造函数中的引用类型属性有修改操作(例如上述实例中数组的添加成员等),则也会影响父类的实例对象对应的该属性值; */ </script> </body> </html>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。