看总结

/*
function Fn(){
this.a=12;
}
var pro=Fn.prototype;//把Fn.prototype对应的堆内存地址,给我们的pro这个变量。此时两个指向同一个内存空间,pro改变Fn.prototype也跟着改变;
pro.a=15;
pro.b=function(){};
* */

/*页面中3种修改向原型链上属性的方式;*/
/*四种检测元素类型的方式*/

`

<script type="text/javascript">
//this指向:
/*function Fn(){
this.a=12;
}
Fn.prototype.a=15;
Fn.prototype.b=function(){
console.log(this.a);//Fn.prototype.a
}
var f=new Fn();
//f.b();//this-->f
f.__proto__.b();//this-->f.__proto__相当于Fn.prototype*/



//页面中修改原型上属性的方式
/*function Fn(){
this.a=12;
}
var pro=Fn.prototype;//把Fn.prototype对应的堆内存地址给我们的pro这个变量,此时两个指向同一个内存空间,pro改变Fn.prototype也跟着改变
pro.a=15;
pro.b=function(){

}*/

/*
function Fn(){
this.a=12;
}
Fn.prototype.b=function(){
console.log(15);
}
//新开一个堆内存,把最新的地址给我们的Fn.prototype
Fn.prototype={
constructor:Fn,//开辟一个新的地址,原有的constructor变了,所以我们需要强制给写上
b:function(){
console.log(20);
}
};
var f=new Fn();
console.log(f.constructor);
*/
</script>

`

<script type="text/javascript">
//基于原型链的继承
function A(){
this.x=1;
}
A.prototype.y=function(){
console.log(this.x);
}
function B(){
this.x=2;
}
//我想让B继承A这个类上的私有和共有的属性:让B的原型等于A的一个实例就好了
B.prototype=new A();
B.prototype.constructor=B;
var f=new B();
console.log(f.constructor);

console.log(f.x);//2
console.log(f.__proto__.x);//1

f.y();//this->f console.log(f.x)-->2
f.__proto__.y();//this-->B.prototype -->1
f.__proto__.__proto__.y();//this-->A.prototype undefined
</script>

`