javascript面向对象编程(一)

在javascript中一切皆对象。在js中面向对象编程可以通过两种方式实现,一种是用函数作为构造函数的构造函数方式,另外一种是直接用JSON来实现的非构造函数方式。

这篇文章主要是采用构造函数方式实现。


基本的实现方式:

<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);
p.say();			//I'm koma
p.getverson();			//1.1.0
console.log(p.age);		//21
</script>


可以看到最基本的类的实现在js中通过函数可以简单的模拟,并且也具有私有、公有属性和方法等。
通过上面的可以看出Person函数现在既可以把它看做是类,同时它有是类的构造方法。其实这样就和php中一样了,当类中方法名和类名相同时则该方法就是该类的构造函数。


基本的创建类的方法明确之后,我们还需要注意一个js中特有的点,那就是在js的面向对象中我们可以随时动态的给类增加属性或者方法,而且通过不同的方式增加来的属性或者方法调用的方式也不同,对于直接通过构造函数名(类名或者函数名)增加的属性或者方法我们可以想象成是php类中的静态方法,因为这种方法或者属性只能通过类名调用,如下:

Person.prototype.nihao = function() {			//通过原型增加
	alert( 'nihao' );	
}
Person.hello = function() {				//直接通过函数名增加
	alert( 'hello' );	
}
var p = new Person('koma', 21);

Person.hello();
p.hello();		//错误

p.nihao();
Person.nihao();		//错误

其中通过原型的方式来扩展类的方法是常用的方法而且也是js中面向对象编程的精髓,这个东西就留着后面的文章继续学习吧,说难也不难,说简单也不是那么的简单。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值