使用JAVASCRIPT实现静态物体、静态方法和静态属性
2015-12-08 11:04
633 查看
Javascript语言的面向对象特征非常弱。其它面向对象语言在创建类时仅仅要使用keywordstatic就可以指定类为静态类,Javascript没有提供static这种keyword。要让Javascript也具有“静态”特性仅仅有靠一些“奇技淫巧”了。代码中列举了两种静态方法/属性的实现方式。一种是静态类的静态方法和属性,还有一种是非静态类的静态方法和属性,代码说明都写在每行的代码凝视里,这里就不反复了。<spanstyle="color:#333333;">functionPerson(name){this.name=name;this.show=function(){alert("MyNameis"+this.name);};};Person.mouth=1;Person.cry=function(){alert("wawa");}Person.prototype.teeth=32;varp=newPerson("x");alert(Person["mouth"]);//1p["show"]();//Mynameisx</span>[/code]
/****************************************
*方法一
*类、方法、属性都为静态类型
*不能创建实例
*****************************************/
varTime={
today:‘2009-3-8′,
weather:‘rain’,
show:function(){
alert(‘Todayis‘+this.today);
}
};
//静态对象可直接使用,无需创建实例
alert(‘Itis‘+Time.weather+‘today.’);
Time.show();
//以下的代码会出错,由于静态类不能创建实例
//vart=newTime();
//t.show();
/****************************************
*方法二
*普通对象,同一时候拥有静态和非静态属性、方法
*能够用实例化
*注意:
*1.静态方法/属性使用类名訪问
*2.非静态方法/属性使用实例名訪问
*****************************************/
functionPerson(name){
//非静态属性
this.name=name;
//非静态方法
this.show=function(){
alert(‘Mynameis‘+this.name+‘.’);
}
}
//加入静态属性。人都是一张嘴
Person.mouth=1;
//加入静态方法。哇哇大哭
Person.cry=function(){
alert(‘Wawawa…’);
};
//使用prototypekeyword加入非静态属性,每一个人的牙可能不一样多
Person.prototype.teeth=32;
//非静态方法必须通过类的实例来訪问
varme=newPerson(‘Zhangsan’);
//使用非静态方法、属性
me.show();
alert(‘Ihave‘+me.teeth+‘teeth.’);
//使用静态方法、属性
Person.cry();
alert(‘Ihave‘+Person.mouth+‘mouth.’);
//
varp=newPerson("x");alert(p.mouth);//回显示没有定义p.cry();//会显示UncaughtTypeError:Object#<Person>hasnomethod'cry'
能够发现,实例对象没法訪问类的静态方法和属性。须要訪问仅仅能使用类名
在Jquery中能够这样使用对象的静态方法和属性:
欢迎大家补充讨论,共同进步!vararr=newArray();arr["push"]("x");alert(arr["length"]);//1
相关文章推荐
- Json对象与Json字符串互转(4种转换方式)
- JS 实现 Tab标签切换功能
- js实时上传文件显示缩略图
- 阿赫亚web安全JSON
- javascript将base64编码的图片数据转换为file并提交
- js随意拖动图片
- JS刷新当前页面的几种方法总结
- js 循环 for in
- 详解js中构造流程图的核心技术JsPlumb(2)
- 【学习】JavaScript设计模式——认识设计模式
- 详解js中构造流程图的核心技术JsPlumb
- js中引用传递和值传递
- NewTonJson.Net的使用
- 常规功能和模块自定义系统 (cfcmms)—022自定义grid列(6图标列)
- ArcGIS API for javascript开发笔记(七)——使用ArcGIS API for javascript调用GP服务
- JavaScript基本数据类型
- JS操作XML实例总结(加载与解析XML文件、字符串)
- JavaScript 的性能优化:加载和执行
- javaweb开发-js代码中keypress事件调用判断,取得keyCode值
- js原生设计模式——9外观模式封装2(小型代码库YJ)