JavaScript函数的实例属性和类属性
来源:互联网 发布:ipad air2软件下载 编辑:程序博客网 时间:2024/05/19 12:40
由于JavaScript函数不仅仅是一个函数,而且是一个类 该函数还是此类唯一的构造器, 只要在调用函数时使用new
关键字,就可返回一个Object,这个Object不是函数的返回值,而是函数本身产生的对象。因此在JavaScript中定义的变量不仅有局部变量,还是实例属性和类属性
根据函数中声明变量的方式,函数中的变量有3种。
- 局部变量:在函数中以普通方式声明的变量,包括以var或不加任何前缀声明的变量
- 实例变量:在函数中以this前缀修饰的变量
- 类属性:在函数中以函数名前缀修饰的变量
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body></body> <script> function Person(national,age) { this.age=age; Person.national=national; var bb=0; } var p1=new Person("中国",29); document.writeln("创建第一个Person对象<br/>"); document.writeln("p1的age属性:"+p1.age+"<br/>"); document.writeln("p1的national属性:"+p1.national+"<br/>") document.writeln("通过Person访问静态national属性为:"+Person.national+"<br/>"); document.writeln("p1的bb属性:"+p1.bb+"<br/>"); document.writeln("<br/><br/>*******************************"+"<br/><br/>"); var p2=new Person("美国",32); document.writeln("创建第二个Person对象<br/>"); document.writeln("p1的age属性:"+p1.age+"<br/>"); document.writeln("p1的nationl属性:"+p1.national+"<br/>"); document.writeln("p2的age属性:"+p2.age+"<br/>"); document.writeln("p2的national属性:"+p2.national+"<br/>") document.writeln("通过Person访问静态national属性为:"+Person.national+"<br/>"); document.writeln("p2的bb属性:"+p2.bb+"<br/>"); </script></html>
运行效果:
Person函数的age属性为实例属性
因而每个实例的age属性都可以完全不同。程序应通过Person对象来访问age属性;national属性为类属性,该属性完全属于Person类,因此必须通过Person类访问national属性,Person对象并没有national属性,所以通过Person对象访问该属性将返回undefined;而bb则是Person的局部变量,在Person函数以外无法访问该变量。
JavaScript与Java不同 它是一种动态语言 它允许随时为对象增加属性和方法,当我们直接为对象的某个属性赋值时,即可视为给对象增加属性。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body></body> <script> var Obj=new Object(); /*此时的Obj类中并没有任何方法 属性*/ Obj.name="垃圾成都东软"; Obj.age=18; with (document){ writeln("名字:"+Obj.name+"<br/>"); writeln("年龄:"+Obj.age) } </script></html>
运行效果:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body></body> <script> function Student(grade,subject) { this.grade=grade; Student.subject=subject; } s1=new Student(5,"Java"); with(document){ writeln("s1的grade属性:"+s1.grade+"<br/>"); writeln("s1的subject属性:"+s1.subject+"<br/>"); writeln("Student的subject属性:"+Student.subject+"<br/>"); } s1.subject="HTML"; with(document){ writeln("<hr/>s1的grade属性:"+s1.grade+"<br/>"); writeln("s1的subject属性:"+s1.subject+"<br/>"); writeln("Student的subject属性:"+Student.subject+"<br/>"); } </script></html>
运行效果:
1 0
- JavaScript函数的实例属性和类属性
- JavaScript之函数实例属性和类属性
- python的类属性和实例属性
- python的类属性和实例属性
- python的类属性和实例属性
- python的类属性和实例属性
- python的类属性和实例属性
- Java的类属性和实例属性
- javascript中的原型属性和实例属性
- 实例属性和类属性
- 类属性和实例属性
- JavaScript prototype 属性和 对象属性、类属性的区别
- Javascript 的构造函数和constructor属性
- javascript的函数属性和方法
- javascript 全局属性和函数
- js属性和方法的可见性:私有属性(方法),实例属性(方法),类属性(方法)
- Python3学习(22)--类的属性和实例的属性
- python中类属性和实例属性的区别
- Android开发之百分比布局
- java线程介绍
- POJ 2516 Minimum Cost(最小费用最大流)
- javac编译出现”编码 GBK 的不可映射字符“错误
- Linux命令学习之crontab
- JavaScript函数的实例属性和类属性
- (综合)进程间通信方式
- 网络设备中的SKB_BUFF
- 【C++学习】【阶段一】Essential C++ 第一章习题答案
- 深入了解 JavaScript 中的 for 循环 – 码农网
- ngx_lua模块API 浅析
- python pandas中的random模块一些函数的用法
- [NOIP2016]蒟蒻两日的旅游
- XXX中医医院南院HIS Oracle数据库临时环境搭建