javascript面向对象编程(二)

通过上一篇文章可以看出在js中可以使用函数来模拟类,这也是js中的面向对象为什么不是纯粹的面相对象而是基于面相对象。那在学习js面相对象之前还需要了解关于js函数中的prototype和constructor这两个属性或者对象。其中prototype就是js中有名的原型,而constructor就是指向对象的构造函数。

首先看如下代码:

<script type="text/javascript">
function Person(name, age) {
	//私有属性
	var verson = '1.1.0';	
	//公有属性
	this.name = name;
	this.age = age;
	//公有方法
	this.say = function() {
		alert( "I'm " + this.name );	
	};
	this.getverson = function() {
		alert( verson );	
	};
}
var p = new Person('koma', 21);

alert( Person.prototype );				//Object
alert( Person.prototype.constructor );	//function Person(name, age) {...
alert( p.constructor );					//function Person(name, age) {...
</script>

那需要了解到的一点就是js中的函数默认都有一个prototype属性,通过函数实例化出来的对象(p)都默认有一个属性constructor。

其中函数的prototype属性指向一个prototype对象,这个prototype对象同时也含有一个默认的constructor属性,这个constructor属性指向的东西和通过函数实例化出来的对象(p)的constructor属性指向的内容一样都是指向这个对象的“构造函数”也就是Person。

那上面这种关系通过画图来展示出来之后就形成了js中的原型链。如下图:


通过上面的图再加上一些理解和认识之后就对于js的原型链和js的prototype有了一些认识,那有了这些准备知识之后就可以掌握好js的面向对象编程了吗?不是的,js中面相对象编程的准备知识还不止这些,还需要了解的知识包括:this、new操作符、闭包。当准备好这些之后我们的js面相对象编程才算是真正的开始。那等下篇文章再介绍这些吧。但是对于js的原型链还是需要一定的时间去理解和沉淀的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值