js 原型继承 Prototype
2017-09-19 21:41
483 查看
javascript 中,(构造)函数可以继承另外一个对象。
1、构造函数实例化出来的对象除了本身成员外,还会拥有被继承对象的成员。
关键字:prototype
例:
var cat={name:"windy",climb:function(){console.log("可以爬树")}}; //对象cat
var tiger=function(){ //构造函数 tiger
this.color="white";
this.hobby=function(){console.log("喜欢吃肉")};
}
tiger.prototype=cat //构造函数tiger继承cat
var northTiger=new tiger();
console.log(northTiger); //打印如下:
2、继承单一成员
var tiger=function(){
this.color="white";
this.hobby=function(){console.log("喜欢吃肉")};
}
tiger.prototype.weight=100; //继承单一成员变量
tiger.prototype.cry=function(){console.log("会嚎叫")}; //继承单一成员方法
var northTiger=new tiger();
console.log(northTiger);//打印如下:
3、继承的注意事项:
a、本身和继承对象拥有同名的成员,要使用本身成员
b、单一成员和对象同时继承时,需要先继承对象再继承单一成员,不然无法继承到单一成员
c、同时继承多个对象,后者覆盖前者
b:例子1 先继承单一成员再继承对象
var cat={name:"windy"};
var tiger=function(){
this.color="white";
this.hobby=function(){console.log("喜欢吃肉")};
}
tiger.prototype.weight=100; //继承单一成员变量
tiger.prototype.cry=function(){console.log("会嚎叫")}; //继承单一成员方法
tiger.prototype=cat; //继承对象cat
var northTiger=new tiger();
console.log(northTiger);//打印如下:
可以看到,如下两个属性没有被继承,只继承了cat对象的name
tiger.prototype.cry=function(){console.log("会嚎叫")}; //继承单一成员方法
tiger.prototype=cat; //继承对象cat
b、例子2 先继承对象再继承单一成员
var cat={name:"windy",sex:"man"};
var tiger=function(){
this.color="white";
this.hobby=function(){console.log("喜欢吃肉")};
}
tiger.prototype=cat; //继承对象
tiger.prototype.name="justin"; //继承单一成员变量
tiger.prototype.cry=function(){console.log("会嚎叫")}; //继承单一成员方法
var northTiger=new tiger();
console.log(northTiger); 打印如下:
可以看到tiger继承了单一成员也继承了对象。因为先继承了对象,再继承了单一成员,对象的name与单一成员的nane属性相同,单一成员的name
覆盖了继承的对象的name
1、构造函数实例化出来的对象除了本身成员外,还会拥有被继承对象的成员。
关键字:prototype
例:
var cat={name:"windy",climb:function(){console.log("可以爬树")}}; //对象cat
var tiger=function(){ //构造函数 tiger
this.color="white";
this.hobby=function(){console.log("喜欢吃肉")};
}
tiger.prototype=cat //构造函数tiger继承cat
var northTiger=new tiger();
console.log(northTiger); //打印如下:
2、继承单一成员
var tiger=function(){
this.color="white";
this.hobby=function(){console.log("喜欢吃肉")};
}
tiger.prototype.weight=100; //继承单一成员变量
tiger.prototype.cry=function(){console.log("会嚎叫")}; //继承单一成员方法
var northTiger=new tiger();
console.log(northTiger);//打印如下:
3、继承的注意事项:
a、本身和继承对象拥有同名的成员,要使用本身成员
b、单一成员和对象同时继承时,需要先继承对象再继承单一成员,不然无法继承到单一成员
c、同时继承多个对象,后者覆盖前者
b:例子1 先继承单一成员再继承对象
var cat={name:"windy"};
var tiger=function(){
this.color="white";
this.hobby=function(){console.log("喜欢吃肉")};
}
tiger.prototype.weight=100; //继承单一成员变量
tiger.prototype.cry=function(){console.log("会嚎叫")}; //继承单一成员方法
tiger.prototype=cat; //继承对象cat
var northTiger=new tiger();
console.log(northTiger);//打印如下:
可以看到,如下两个属性没有被继承,只继承了cat对象的name
tiger.prototype.cry=function(){console.log("会嚎叫")}; //继承单一成员方法
tiger.prototype=cat; //继承对象cat
b、例子2 先继承对象再继承单一成员
var cat={name:"windy",sex:"man"};
var tiger=function(){
this.color="white";
this.hobby=function(){console.log("喜欢吃肉")};
}
tiger.prototype=cat; //继承对象
tiger.prototype.name="justin"; //继承单一成员变量
tiger.prototype.cry=function(){console.log("会嚎叫")}; //继承单一成员方法
var northTiger=new tiger();
console.log(northTiger); 打印如下:
可以看到tiger继承了单一成员也继承了对象。因为先继承了对象,再继承了单一成员,对象的name与单一成员的nane属性相同,单一成员的name
覆盖了继承的对象的name
相关文章推荐
- 说一说js中__proto__和prototype以及原型继承的那些事
- js实现继承的练习 prototype原型继承
- 变量对象,作用域链,闭包,匿名函数,this关键字,原型链,构造器,js预编译,对象模型,执行模型,prototype继承
- JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链
- 前端开发必须知道的JS(一) 原型和继承
- javascript原型继承(第三篇)---prototype
- js原型链、继承
- javascript-js 的prototype原型理解讲解
- js 构造函数(construction)与原型(prototype)
- js中的原型与继承
- js原型、继承
- js中的prototype和基于prototype的继承总结
- 浅谈js继承之原型链继承
- js中继承的几种用法总结(apply,call,prototype)
- js中继承的几种用法总结(apply,call,prototype)
- 【转】理解js中的原型链,prototype与__proto__的关系
- js 的原型链 以及伪继承
- JS原型继承和类式继承
- 前端开发必须知道的JS(一) 原型和继承(转)
- js中函数对象的属性,函数原型属性length、name、prototype