JavaScript的封装
来源:互联网 发布:求补码的方法编程 编辑:程序博客网 时间:2024/06/04 08:14
一,首先,为什么要使用封装?
这是从信息的角度出发的,信息的隐藏是最终的目的,而封装只不过是实现隐藏的一种方法。
这里我们需要明白一点就是:类的定义有如下的三种方式:
(第一种)门户大开型方式 (第二种)用命令规范区别私有和公有的方式 (第三种)闭包
现在详细描述一下每一种类的定义方式:
针对第一种,门户大开类型
首先,我们来看一种情况
(1)声明一个简单的类,代码如下
1
2
3
4
5
function Person(age,name) {
this
.name=name;
this
.age=age;
}
(2)实例化类+调用
1
2
var
p=
new
Person(-10,
"小明"
);
alert(p.age)
//结果出现年龄出现负数
从上述的运行结果中,我们可以看出程序可以正常执行,但这并符合实际,因为年龄出现 了负数,这不是我们想要的,我们需要一个能正确处理并产生与实际情况相符的解决方案。
为了能解决上述年龄出现的问题,我们可以这样做:扩展类的原型链
Person.prototype={ checkAge:function (age) { if(0<age&&age<150){ return true; }else { return false; } } }
加上解决方案后,代码如下
(1)基本类
function Person(age,name) { this.name=name; //调用方法判断验证 if(!this.checkAge(age)){ throw new Error("年龄必须在0-150之间"); } this.age=age; }
(2)年龄判断验证
Person.prototype={ checkAge:function (age) { if(0<age&&age<150){ return true; }else { return false; } } }
(3)调用
var p2=new Person(10,"小明");alert(p2.age)
我们还可以给name添加一个读取验证,name为空时使用默认值 同样是扩展类的原型链
代码如下,
Person.prototype["getName"]=function () { return this.name||"我是默认的"; }//调用
var p3=new Person(10,"");alert(p3.getName())//结果为“我是默认的”
总结一下:当类被定义为门户大开类型时会出现与实际不符合的情况 ,虽然我们可以加在类上扩展原型类加验证方法解决,但是这样会使类变得臃肿。
针对第二种,用命名规范区别私有和公有
步骤如下,
(1)定义类 在类中定义变量(私有和公有变量)+验证方法的调用
//用命名规范来区别私有和公有 function Person(name,age,email) { //定义私有变量
阅读全文
0 0
- JavaScript封装的HashMap
- javaScript-类的封装
- Javascript的封装库
- JavaScript的封装
- javascript的封装jQuery
- 什么是javascript封装,封装的方法有几种
- JavaScript的继承的封装
- 经典的JavaScript封装控件
- 面向对象的Javascript:封装
- javascript封装的ajax函数库
- Javascript 对象封装的例子
- JavaScript 自己封装的Set
- javaScript封装的各种写法
- javascript常见的封装方式
- javascript 封装
- javascript封装
- JavaScript 封装
- JavaScript封装
- hitTest和pointInside方法你真的熟吗?
- css3弹性盒模型flex快速入门与上手1
- JavaScript匿名自执行函数的定义
- 基于主动学习的高光谱图像分类方法研究
- Django中的一些常用内置函数
- JavaScript的封装
- [VS2010]_[Windows]_[Debug模式下LoadLibrary错误87]
- flume高级配置——数据流的复制、分流、负载均衡、故障转移
- 百练2815---城堡问题 数据结构初学小鲜肉 思路代码分享
- 关于Mybatis的Batch模式性能测试及结论
- A
- OpenGL程序常见函数功能介绍
- jQuery on()方法绑定动态元素的点击事件无响应的解决办法
- 跨服务存储传递HttpContext Cookies