javascript的继承

首先以博主的浅见,js一共只有8种数据类型,分别是:

三种基本类型:字符串型,数字型,布尔型

复合数据类型:数组,对象

其他数据类型:null,undifined

也就是说,js不存在类这个概念,js的继承并不是基于类的,而是基于原型对象的

 

 狭义上说js只有一种机能实现了类似继承的东西:就是利用构造函数创建对象,这是对象有一个prototype属性,可以使用构造函数中的值。

 

在js中,所有对象都会有一个原型对象,对象会继承原型对象中的属性和方法,原型对象可以看做对象的一个属性,语法是这样的

object.prototype

在初始状态下prototype中什么都没有,下面这个例子的什么都没输出

 

<html>
<head>
<title>prototype</title>
<meta http-equiv=content-type content=text/html;charset=gb2312>
<script type=text/javascript>
	function typeObject(){
		this.attribute1="str";
		this.attribute2=123;
		this.attribute3=true;
	}
	//遍历原型对象
	for(var obj in typeObject.prototype){
		document.write(obj,":",myObject.prototype[obj],"<br>");
	}
</script>
</head>
<body>
</body>
</html>
 

 

为方便起见,以下的例子我只写script标签中的js

 

以下语法是js原型对象的语法,它利用构造函数构造了一个对象。

 

function mobile(_price,_factory,_type,_size){
	this._price=_price;
	this._factory=_factory;
	this._type=_type;
	this._size=_size;
}
//利用构造函数构造对象
var myMobile01=new mobile(1999,"小米","MI3",5.0);
document.write("没有为原型对象添加属性时,myMobile对象中的所有属性:<br>");
for(var obj in myMobile01){
	document.write(obj,":",myMobile01[obj],"<br>");
}

 

以上就是利用构造函数创建对象:这时的输出是:

没有为原型对象添加属性时,myMobile对象中的所有属性:
_price:1999
_factory:小米
_type:MI3
_size:5

 

可以在以上代码后面再加上一段代码用来说明prototype

mobile.prototype.interface="USB";
document.write("为原型对象添加一个属性,此时myMobile对象中的所有属性");
for(var obj in myMobile01){
	document.write(obj,":",myMobile01[obj],"<br>");
}

 

此时的输出是:

没有为原型对象添加属性时,myMobile对象中的所有属性:
_price:1999
_factory:小米
_type:MI3
_size:5

为原型对象添加一个属性,此时myMobile对象中的所有属性:
interface:USB
_price:1999
_factory:小米
_type:MI3
_size:5

综上所述,可以这样理解,所谓js的继承是分以下三部实现的

  1. 创建构造函数
  2. 利用构造函数创建对象
  3. 创建出的对象自动有内置prototype属性,可以利用这个属性修改构造函数

或者我们不去生搬硬套java,我们这么说:js中没有继承这回事,只有原型对象,原型对象的机能是这样的:

创建构造函数

利用构造函数创建对象:var myMobile01=new mobile(1999,"小米","MI3",5.0);

这是myMobile01对象就会有个默认属性,是prototype,可以利用prototype来操作原型对象,也就是动态的去改变构造函数

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值