子可以继承父;但父不能继承子
1.实例化继承.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
function a(){
};
a.prototype.c =10 ; //给a的原型上加一个c的属性
function b(){
};
b.prototype = new a(); //把实例化的a 赋给B的原型
console.log(new b().c) //实例出来的b会拥有a的方法; 10
</script>
</body>
</html>
2.call的理解:
call 方式改变this指向 并且调用一次当前的函数 ,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
function a(){
console.log(this)
}
a.call(1)
</script>
</body>
</html>
call 从第二个参数到之后参数就是调用函数的形参的第二个到之后的
function a(x,y,z){
console.log(this,z,y,x)
}
a.call(1,2,3,4)
3.call 的demo:
/*
当前的this为B的this把它放入a里面,传入a方法;
改变了a的this,
结果a的this变成了B 的 this,
最后拿到了 K 再次回到了b这个方法
*/
function a(){
this.k = 10;
}
function b(){
a.call(this)
/*
当前的this为B的this把它放入a里面,传入a方法;
改变了a的this,
结果a的this变成了B 的 this,
最后拿到了 K 再次回到了b这个方法
*/
}
new b().k
console.log(new b().k) //10