在经典的面向对象编程中,经常需要将对象的某个状态封装或隐藏在对象内,只有通过对象的方法才能访问这些状态,对外只暴露一些重要的状态可以直接编写。这是就需要私有状态。

function Range(from, to){
this.from = function(){return from;}
this.to = function(){return to;}
} Range.prototype = {
constructor: Range,
includes:function(x){return this.from() <= x && x <= this.to();},
foreach:function(f){
for(var x = Math.ceil(this.from()),max = this.to();x < max;x++)f(x);
},
toString:function(){
return "(" + this.from() + "..." + this.to() + ")";
}
}

javascript练习-私有状态的更多相关文章

  1. JavaScript实现私有属性

    原文:JavaScript实现私有属性 JavaScript被很多人认为并不是一种面向对象语言,原因有很多种,比如JavaScript没有类,不能提供传统的类式继承:再比如JavaScript不能实现 ...

  2. 原生 JavaScript 实现 state 状态管理系统

    原生 JavaScript 实现 state 状态管理系统 Build a state management system with vanilla JavaScript | CSS-Tricks 在 ...

  3. JavaScript利用装饰模拟实现私有状态

    在经典的面向对象编程中,经常需要将对象的某个状态封装或隐藏在对象内,只有通过对象的一幅幅和能访问这些状态,对外只暴露一些重要的状态变量可以直接读写. 我们可以通过将变量(或参数)装饰在一个构造函数内来 ...

  4. Arcgis for javascript不同的状态下自己定义鼠标样式

    俗话说:爱美之心.人皆有之. 是的.没错,即使我仅仅是一个做地图的,我也希望自己的地图看起来好看一点. 在本文,给大家讲讲在Arcgis for javascript下怎样自己定义鼠标样式. 首先.说 ...

  5. javaScript在私有的属性和方法

    javaScript并没有什么特别的语法来代表私人.保.或公共的属性和方法,在这一点上与 java或其他语言是不同的.JavaScript大家是共同的所有对象: var myobj={ mypop:1 ...

  6. 再起航,我的学习笔记之JavaScript设计模式19(状态模式)

    状态模式 概念介绍 状态模式(State):当一个对象的内部状态发生改变时,会导致其行为的改变,这看起来像是改变了对象 示例演示 在我们写项目的过程中或多或少会遇到如下的多分支判断 function ...

  7. 深入理解JavaScript模拟私有成员

    一般的面向对象语言C++或JAVA,对象都是有私有成员的.js中没有类的改变,同样也没有对象的私有成员这个概念.但是可以通过某些特殊写法,模拟出私有成员. 1.特权模式: (1)在构造函数内部声明的变 ...

  8. Arcgis for javascript不同的状态下自定义鼠标样式

    俗话说:爱美之心,人皆有之.是的,没错,即使我只是一个做地图的,我也希望自己的地图看起来好看一点.在本文,给大家讲讲在Arcgis for javascript下如何自定义鼠标样式. 首先,说几个状态 ...

  9. JavaScript 类私有方法的实现

    一:将私有方法移出模块,因为模块内部的所有方法都是对外可见的. class Widget { foo (baz) { bar.call(this, baz); } // ... } function ...

随机推荐

  1. -[UIKeyboardLayoutStar release]: message sent to deallocated instance 0x7fbe49120000

    __NSArrayM objectAtIndex: 取消swizzle 只有debug的时候会报错,发布的时候是好的,所以可以不用改

  2. javax/javaee-api/ Maven依赖

    <dependency>    <groupId>javax</groupId>    <artifactId>javaee-api</artif ...

  3. git 常用操作

    查看某文件的某些行的变化历史: $ git log --pretty=short -u -L 2003,2005:Executor.cpp http://stackoverflow.com/quest ...

  4. 2016年&2017年

    2016年在IBM已经工作4年了,从门户项目到今年的保险行业灾备项目,从之前的技术到现在的项目推进,由面对机器工作到,跟更多的人打交道,工作继续进行着,希望今天的项目尽早结束. 由于工作的原因,今年回 ...

  5. 根据UIColor对象,获取对应的RGBA值

    - (NSArray *)getRGBWithColor:(UIColor *)color { CGFloat red = 0.0; CGFloat green = 0.0; CGFloat blue ...

  6. JS产生随机一注彩票

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  7. Window Server 2012 R2 没有照片查看器 打开图片都是画板问题怎么解决

    新安装了 Window Server 2012 R2 系统,感觉屌屌的样子,加上开机速度蛮快,心里略爽.结果,打开图片一看,发现竟然是画板,而且还没有照片查看器,顿时泪流满面. 后来我利用了强大的百度 ...

  8. js实例:验证只能输入数字和一个小数点

    分享一个javascript脚本代码,用于验证只能输入数字和一个小数点,检测数字输入是否符合要求,效果不错,有用到的朋友拿去吧. 原文地址:http://www.jbxue.com/article/1 ...

  9. 记录视频“ Why I build Docker"

    Why we built Docker ? IT界中云计算革命正在如火如荼的进行着,docker 正在引领着这个潮流. 那么docker 是怎么引进来的呢? Docker的CTO在下面视频里如此清晰的 ...

  10. 学习html心得

    最近我们小组在搞一个网站项目,每个组员都在学习html与css. 我们先找到相关网站寻找信息进行学习,内容不多,我很快就把html的教程看完了.感觉还不错,就下载了html编辑器Notepad++进行 ...