首页 > 代码库 > js中的继承

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>

 

js中的继承