js继承之原型链继承
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 原型链继承的方法 -->
<script>
function Super(){
this.a='111';
}
Super.prototype.say=function(){
console.log(222);
}
function Sub(){}
// sub 对象想使用 Super 的实例方法和原型方法
Sub.prototype=new Super();
// sub1 -> Sub.prototype(new Super) -> Super.prototype
Sub.prototype.constructor=Sub;
var sub1=new Sub();
console.log(sub1.a);
sub1.say();
</script>
<!-- 原型链继承的缺点 : 采用 构造函数继承解决-->
<script>
function Super(){
this.a='111';
}
Super.prototype.say=function(){
console.log(222);
}
function Sub(){
}
Sub.prototype=new Super();
var sub1=new Sub();
var sub2=new Sub();
console.log(sub1);
sub1.__proto__.a='333'; // 这里体现了原型链继承的缺点:每个实例对象都需要共享变量
console.log(sub1);
console.log(sub2);
</script>
</body>
</html>
欢迎指正