JavaScript之函数实例属性和类属性

根据函数中声明的方式,函数中变量有3种:

1)        局部变量:在函数中以普通方式声明的变量,包括以var或不加任何前缀声明的变量。

2)        实例属性:在函数中以this前缀修饰的变量

3)        类属性:在函数中以函数名前缀修饰的变量

实例属性和类属性则是面向对象的概念:实例属性是属于单个对象的,因此必须通过对象来访问;类属性是属于整个类(也就是函数)本身的,因此必须通过类(也就是函数)来访问。

同一个类(也就是函数)只占用一块内存,因此每个属性将只占用一块内存;同一个类(也就是函数)每创建一个对象,系统将会为该对象的实例属性分配一块内存。看下面的代码。

<script type="text/javascript">
	// 定义函数Person
	function Person(national, age)
	{
		// this修饰的变量为实例属性
		this.age = age;
		// Person修饰的变量为类属性
		Person.national =national;
		// 以var定义的变量为局部变量
		var bb = 0;
	}
	// 创建Person的第一个对象p1。国籍为中国,年纪为29
	var p1 = new Person('中国' , 29);
	document.writeln("创建第一个Person对象<br />");
	// 输出第一个对象p1的年纪和国籍
	document.writeln("p1的age属性为" + p1.age + "<br />");
	document.writeln("p1的national属性为" + p1.national + "<br />");
	document.writeln("通过Person访问静态national属性为" 
		+ Person.national + "<br />");
	// 输出bb属性
	document.writeln("p1的bb属性为" + p1.bb + "<br /><hr />");
	// 创建Person的第二个对象p2
	var p2 = new Person('美国' , 32);
	document.writeln("创建两个Person对象之后<br />"); 
	// 再次输出p1的年纪和国籍
	document.writeln("p1的age属性为" + p1.age + "<br />");
	document.writeln("p1的national属性为" + p1.national + "<br />");
	// 输出p2的年纪和国籍
	document.writeln("p2的age属性为" + p2.age + "<br />");
	document.writeln("p2的national属性为" + p2.national + "<br />");
	// 通过类名访问类属性
	document.writeln("通过Person访问静态national属性为"
		+ Person.national + "<br />");
</script>

执行的结果:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值