var myConstructor = function(message){
//实例变量
this.message = message; //私有变量,外部不可见。用var声明的变量具有块作用域
var separator = '-';
var owner = this; //私有方法:只能在构造器内调用
function alertMessage(){
alert(owner.message);
//alert(this.message);则下面concatMessage()方法会显示undefined
} //与前面一样是私有方法
//注意:这种做法在脚本执行到该赋值语句之前 alertMessage()函数是不存在的。
//如果在该定义发生之前调用alertMessage()将会出错。
//var alertMessage =function (){
// alert(owner.message);
//} //特权方法(也是公有方法)。可访问内部私有变量,也能被外部调用
this.concatMessage = function(string){
this.message += separator + string;
alertMessage();
}
} //公有方法,但不是特权方法,不能访问separator变量。出错:separator is undefined
//去掉separator后可以正常工作
//myConstructor.prototype.concatMessage = function(string){
// this.message += separator + string;
// alert(this.message);
//} var two = new myConstructor('a');
//私有方法,外部不能调用
//two.alertMessage();
two.concatMessage('b');

注意:

1.由于私有和特权成员在函数的内部,因此在创建实例时,每个实例都会包含同样的私有和特权成员副本。所以实例越多,占用的内存也就越多。

js模拟类的公有与私有 方法与变量的更多相关文章

  1. 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘

    孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...

  2. js模拟类

    ECMAScript6已经支持了class,但之前版本都不支持类,但是可以通过一些方法来模拟类. js中的类,既是重点,也是难点,很多时候都感觉模棱两可. 首先强调一下js中很重要的3个知识点:thi ...

  3. 使用PowerMockito和Mockito进行模拟测试,包括静态方法测试,私有方法测试等,以及方法执行的坑或者模拟不成功解决

    依赖:这个很重要,不同版本用法也有点区别: <dependency> <groupId>org.mockito</groupId> <artifactId&g ...

  4. Objective-C的面向对象中,类有真正的私有方法和私有属性么?

    在Java/C#等面向对象语言中,方法的访问权限可以通过public/private/protected来控制其访问权限.而在OC中,方法却并没有访问修饰符.那么,我们有没有办法使其方法变为私有? 1 ...

  5. JS模拟实现封装的三种方法

      前  言  继承是使用一个子类继承另一个父类,那么子类可以自动拥有父类中的所有属性和方法,这个过程叫做继承!  JS中有很多实现继承的方法,今天我给大家介绍其中的三种吧. 1.在 Object类上 ...

  6. 【转】【Java】利用反射技术,实现对类的私有方法、变量访问

    java关于反射机制的包主要在java.lang.reflect中,structs,hibernate,spring等框架都是基于java的反射机制. 下面是一个关于利用java的反射机制,实现了对私 ...

  7. python为什么有私有方法和变量

    1. 访问安全,其实也没有决定的安全 >>> class humer(object): ... def __init__(self, name): ... self.name = n ...

  8. JS创建类和对象(好多方法哟!)

    http://www.cnblogs.com/tiwlin/archive/2009/08/06/1540161.html 这是别人写的~~~我借来看看 JavaScript 创建类/对象的几种方式 ...

  9. 已经mock类中引用的其它service类,但是在invoke私有方法的时候,该service类是空值

    错误原因:没有在开始测试用例的时候,初始化类的所有注解方法. 解决方法: 使用mock方法创建mock对象时,需要在测试用例执行前执行以下代码.通常, 这句代码可以放在测试基类或者@Before 中. ...

随机推荐

  1. 转:.NET获取当前方法名或调用此方法的方法名

    Introduction Before .NET, we were always looking for a way to log current method name in a log file ...

  2. BZOJ4346 : [POI2016]Nadajniki

    设$f[x][j]$表示$x$点不放无线,它的儿子里放了$j$个无线,且对$x$的父亲不作要求时的最小代价. $g[x][j]$表示$x$点不放无线,要求$x$的父亲至少放$j$个无线时的最小代价. ...

  3. fork和execve

    fork函数在新的子进程中运行相同的程序,新的子进程是父进程的一个复制品. execve函数在当前进程的上下文中加载并运行一个新的程序.它会覆盖当前进程的地址空间,但并没有创建一个新的进程.新的程序仍 ...

  4. java 实现数据结构之队列

    队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,只允许在表的后端(rear)进行插入操作. 1.队列的顺序存储结构及实现 public class SequenceQueue&l ...

  5. hdu Load Balancing

    这道题题目表示看不懂,如果哪位明白题意的,还望在评论里留个言指导一下!

  6. HDU 5521 Meeting(虚拟节点+最短路)

    Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total ...

  7. HDU 2094 产生冠军(半拓扑排序+map)

    产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. CSS系列:less备忘

    less备忘 //这是一个运行在koala中的less文件,//注释不会被编译到css文件中,/**/注释会 ****************by 李可 2016/04/19 /*所有,所有伪类*/ ...

  9. JavaScript系列:函数 自执行 表达式 声明 定义

    可用方式 (function($) {})(jQuery); !function( $ ){}(jQuery); +function( $ ){}(jQuery); -function( $ ){}( ...

  10. php运行模式的比较(转)

    PHP运行模式有4钟:1)cgi 通用网关接口(Common Gateway Interface))2) fast-cgi 常驻 (long-live) 型的 CGI3) cli  命令行运行   ( ...