《Javascript权威指南》学习笔记之八:静态成员、静态类、枚举、重载和覆盖
来源:互联网 发布:php用户管理系统代码 编辑:程序博客网 时间:2024/05/22 08:03
一、创建静态成员
直接将属性或者方法赋给类本身
function Person(name,age){this.myname = name;this.age = age;}Person.showInfo = function() //静态方法,只能访问静态属性{return ("我的性别是:"+Person.sex);};var per = new Person("yuan",20);Person.sex = "男"; //静态属性alert(Person.showInfo());
Google中运行结果:
也可以改为this.sex访问,结果相同。但是不可以用this.myname/this,age访问实例属性。
二 、注意事项
2.1 静态成员一般是公共成员,不能被继承,但可以在子类中直接使用
2.2 JS中允许定义同名的静态属性和实例属性,二者互相独立
function Person(name,age,sex){this.myname = name;this.age = age;this.sex = sex;}Person.showInfo = function() //静态方法,只能访问静态属性{return ("我的性别是:"+Person.sex);};var per = new Person("yuan",20,"女");Person.sex = "男"; //静态属性alert(Person.showInfo());
运行结果:
2.3 静态方法中不能访问实例属性,且不能使用关键字super,但是实例方法可以访问静态属性和实例属性
function Person(name,age,sex){this.myname = name;this.age = age;this.sex = sex;}Person.prototype.showInfo = function() //实例方法{return ("我的性别是:"+Person.sex+"\n我的年龄是:"+this.age);};var per = new Person("yuan",20,"女");Person.sex = "男"; //静态属性alert(per.showInfo());
运行结果:
2.4 如果一个类的成员全是静态成员,则这个类是静态类,不能被实例化。
三 、枚举:一组静态常量
function Day(){throw new Error("这是静态类,不能实例化");}Day.MONDAY = 1;Day.TUE = 2;Day.WED = 3;var date = new Date();var day = date.getDay();switch(day){case Day.MONDAY:alert("周一");break;case Day.TUE:alert("周二");break;case Day.WED:alert("周三");break;}
四、重载和覆盖
4.1 重载:在JS中,不允许有两个同名的方法,且参数没有数据类型,所以JS中的重载是通过参数的个数不同实现的
function OverLoad(){this.method = function(){var len = arguments.length;if(len == 2){document.write("正在调用的是两个参数的方法<br/>");}else if(len == 3){document.write("正在调用的是三个参数的方法");}}}try{var over = new OverLoad;over.method(1,2);over.method(1,2,3);}catch(err){document.write(err);}
运行结果
4.2 覆盖:用于继承中,指子类中定义了与父类中同名的方法,父类的同名方法被隐藏
//父类function Father(myName,age){this.myname = myName;this.age = age;}Father.prototype.show = function(){return("Father's name: "+this.myName+", and age: "+this.age);};//子类function Child(myName,age){this.$super = Father; //继承父类this.$super(myName,age); //调用父类的构造方法this.show = function(){return ( "Child's age: "+this.age);};}Child.prototype = new Father();var child = new Child("yuan",20);alert(child.show());
运行结果:
0 0
- 《Javascript权威指南》学习笔记之八:静态成员、静态类、枚举、重载和覆盖
- 《Javascript权威指南》学习笔记之八:静态成员、静态类、枚举、重载和覆盖
- 《Javascript权威指南》学习笔记之八:静态成员、静态类、枚举、重载和覆盖
- j2SE第二季之枚举和类的静态成员
- JavaScript学习笔记(二十六) 静态成员
- javascript权威指南学习笔记-数组1(八)
- C#学习之静态成员和非静态成员,构造函数,方法,方法参数,操作符重载,事件
- 《Javascript权威指南》学习笔记之十一:处理字符串---String类和正则表达式
- 《Javascript权威指南》学习笔记之十一:处理字符串---String类和正则表达式
- 静态成员-学习笔记
- 静态类和静态类成员(C# 编程指南)
- 静态类和静态类成员(C# 编程指南)
- 静态类和静态类成员(C# 编程指南)
- C++学习笔记--类的静态成员变量和静态成员函数
- javascript权威指南学习笔记
- javascript权威指南学习笔记
- ###JavaScript权威指南学习笔记:
- javaScript权威指南学习笔记
- PAT A 1067. Sort with Swap(0,*) (25)
- dispatch_once的使用
- ubuntu 64位不支持adb,多架构支持,安装ia32-libs解决--适用ubuntu 12.04以后版本
- linux oracle 安装错误 系统参数小于要求的参数 Error Message:PRVF-4353 PRVF-4354
- 简易bootloader重定位问题
- 《Javascript权威指南》学习笔记之八:静态成员、静态类、枚举、重载和覆盖
- openCV2马拉松第19圈——Harris角点检测(自己实现)
- Spring事务配置的几种方式
- 枚举类型
- 五险一金讲解
- 2014 百度之星 题解 1004 Labyrinth
- iOS开发-比较好的文章和资源链接
- QT——正则表达式
- OCP-1Z0-051 第163题 判断null值