当将私有成员与构造函数一起使用时,其中一个缺点在于每次调用的构造函数以创建对象时,这些私有成员都会被重新创建为了避免复制工作以及节省内存,可以将常用属性和方法添加到构造函数的prototype属性中,这样,通过同一个构造函数创建的多个实例可以共享常见的部分数据,此外还可以在多个实例中共享隐藏的私有成员,为了实现这一点,我们需要使用构造函数中的私有属性以及对象字面量中的私有属性,由于prototyp
当使用对象字面量(object literal)的时候,创建私有成员mio_lt;scriptmio_gt; var obj = (function(){ var name = "my name"; return { getName: function () { return name;
javaScript并没有特殊的语法来表示私有 保护 或公共属性和方法,这一点是和其他语言不同的mio_lt;scriptmio_gt; var obj = { my: 1, get: function () { return 'aaa'; } } console.log(obj.my);
在你的函数或模块的顶部声明代码所依赖的模块是一个非常好的主意mio_lt;scriptmio_gt; var myfunc = function () { var event = YAHOO.util.Event, dom = YAHOO.util.Dom; //do something } mio_lt;/scriptmio_gt;显示的依赖声
命名空间(namespace)有助于减少程序中所需要的全局变量的数量,并且同时还有助于避免命名冲突或过长的名字前缀mio_lt;scriptmio_gt; var MYAPP = {}; MYAPP.some_var = 1; MYAPP.child = function () {}; MYAPP.parent = function () {}; mio_lt;/scrip
函数应用在一些纯粹的函数式编程语言中,函数并不描述为被调用(即called或invoked),而是描述为应用(applied),在JS中我们也可以做同样的事,使用function.prototype.apply()来应用函数方法对象.apply(对象,参数数组对象)方法对象.call(对象,参数)mio_lt;scriptmio_gt; var a = {}; a.haha = funct
//我的mioSlider的配置方式得改改了 学了这个之后大有启发!配置对象模式(configuration object pattern)是一种更整洁的API的方法,尤其是建立一个库或任何将被其他程序使用的代码的情况mio_lt;scriptmio_gt; function addUser(conf) { console.log(conf); } var co
其实这种模式类似于memcache缓存mysql,即建立一个结果对象,根据输入条件进行查询和存储,如果有就直接返回,没有则进行计算mio_lt;scriptmio_gt; var myFunc = function (param) { if (!myFunc.cache[param]) { var result = 'aaaa';
即时函数模式(immediate function pattern)是一种可以支持在定义函数后立即执行函数的语法1.可以使用函数表达式定义一个函数2.在末尾添加一组括号,这将导致函数立即执行3.将整个函数包装在括号中mio_lt;scriptmio_gt; (function() { console.log('1111111'); })(); mio_lt;/scriptmio_g
惰性函数定义(lazy function definition),当第一次执行时才被正确的定义,并且具有向后的惰性,执行更少的工作他与返回函数类似,不过他在第一次执行完成之后就覆盖了最初的对象,避免的返回函数重新赋值时,属性也被初始化的局面var haha = function() { console.log('init'); this.name = 'inited!';