JavaScript是弱类型语言,但本身的面向对象思想也是很强大的,继承也是一大核心。两个常用继承:
先定义一个父类,顺便展示原型链的使用。
function user() {
this.name = name || 'wade';
this.age = function () {
console.log(this.name + '的年龄30');
}
}
user.prototype.height = function () {
console.log(this.name + '的身高193');
}
var user = new user();
console.log(user.name);//wade
user.age();//wade的年龄30
user.height();//wade的身高193
通过原型链继承:
function Son() {
}
Son.prototype = new User();
var son = new Son();
console.log(son.name);//wade
son.age();//wade的年龄30
son.height();//wade的身高193
但是当你想要修改某个父类已有的属性的时候,必须是在继承之后修改,否则会被父类覆盖
function Son() {
}
Son.prototype.name = 'kobe';//在继承之前修改,下面还是输出name为wade
Son.prototype = new User();
Son.prototype.name = 'kobe';//在继承之后修改,下面输出的为kobe
var son = new Son();
console.log(son.name);//wade
son.age();//wade的年龄30
son.height();//wade的身高193
这个继承方法,没办法实现多继承,意思是继承了一个之后是不能再继承另外一个,也不能向父类传递参数,修改原有的属性需要new之后。
构造继承:
function Son(name) {
User.call(this);
this.name = name || 'kobe';
}
var son = new Son();
console.log(son.name);
son.age();
用这个继承方法,可以实现多个继承,也可以传递参数。
继承的实现方式还有好几种,本人认为这是常用的,当然,应该也会有一些细节或者是原理我讲的不对,欢迎指正。
欢迎关注 Coding 个人笔记 公众号
网友评论