首页 > 代码库 > js原型链与继承
js原型链与继承
先看看JAVA中继承的定义 :Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
所以继承需要实现的是:能够拥有父类的方法和属性,也能自己定义新的方法和属性;
那么直接用原型链会有什么问题?
//定义一个CarModel类function CarModel(c){ this.color=c||"白色"; this.getColor=function(){ console.log(‘我的颜色是‘+this.color); }}//car类有自己的属性,比如品牌function Car(brand){ this.brand=brand; this.getBrand=function(){ console.log(‘我的品牌是‘+this.brand); }}//car类需要继承自carmodel,汽车共有的属性color放在carmodel上Car.prototype=new CarModel();var car1=new Car("丰田");console.log(car1);
以上就是直接利用原型链来继承的效果;现在的话颜色是默认的白色,如果子类要定义自己的颜色怎么做?
car1.color="蓝色";
存在的问题:如果原型上有引用类型的数据,子类实例改变这些引用类型的数据的话会影响其他所有的子类实例(关于引用数据类型和基本数据类型参考:这个文章);当你操作基本类型时相当于操作一个副本,当操作引用类型时改变的就是他的原始值了;
验证这个问题:
1.原型上添加引用类型数据:数组
2.改变值
确实影响了原型对象
然后:操作基本数据类型的时候是不会影响原型的(比如你操作car1.color)你可以自己试试哈
js原型链与继承
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。