原文链接
http://www.litotes.demon.co.uk/js_info/private_static.html
期待简译。
有一些代码,整得有些过了,但还是很值得参考。在jct的代码中看到了类似的用法。
在js中隐藏变量还是有必要的,否则和其他的js库冲突,就会很麻烦,很难找到bug。
贴几段代码,明白人都看得懂。
var MyObject = (function(){
/*private static (class) member*/
var counter = 0;
/*private static method.*/
function incrementCounter(){
return counter++;
};
/*class constructor.*/
function constructorFn(id){
this.id = id;
var self = this;
/*call private static (class)
method and assign the returned
index to a private instance member.*/
var index = incrementCounter();
/*privileged instance method.*/
this.getIndex = function(){
return index;
};
};
/*privileged static (class) method
(a property of the constructor)*/
constructorFn.getNoOfInsts = function(){
return counter;
};
/*public instance method privaliged at the
class level*/
constructorFn.prototype.pubInstMethod = function(){
...
};
/*return the constructor.*/
return constructorFn;
})(); //simultaneously define and call (one-off)!
/*public static member*/
MyObject.pubStatic = "anything"
/*public instance member*/
MyObject.prototype.pubInstVar = 8;
再来一段
var global = this;
(function(){
var classGroupMember = 3;
function privateToClassGroup(){
/*this method could be a utilitiy
for the classes in the group or used
as an internal object constructor.*/
...
};
global.MyObject1 = function(){
var privteStaticMember = 4;
function privateStaticMethod(){
...
};
function constructorFn(id){
...
};
/*return the constructor.*/
return constructorFn;
}(); //simultaneously define and call!
global.MyObject2 = function(){
function constructorFn(id){
...
};
/*return the constructor.*/
return constructorFn;
}(); //simultaneously define and call!
global.MyObject3 = function(){
function constructorFn(id){
...
};
/*return the constructor.*/
return constructorFn;
}(); //simultaneously define and call!
})(); //simultaneously define and call!
再来一段:
/*constructor function */
function MyObject(){
...
}
MyObject.prototype = (function(){
/*private static (class) member*/
var privateStaticProp = "anything";
/*private static method .*/
function privateStatic Method = function(){
...
}
return ({
/*These functions objects are shared by
all instances that uses this prototype
and they have access to the private static
members within the closure that returns
this object*/
publicInstanceMethod:function(){
...
},
setSomething:function(s){
privateStaticProp = s;
}
});
})();
/*public instance member*/
MyObject.prototype.pubInstVar = 8;
分享到:
相关推荐
- **注释**:在JavaScript代码中添加特殊格式的注释,用于描述代码的功能、参数、返回值等信息。 - **标签**:注释中使用的特定关键字,用于标注代码的不同方面。 - **文档生成**:基于代码中的注释自动创建文档的...
private static readonly UserList _Instance = new UserList(); private UserList() { } public static UserList Instance { get { return _Instance; } } public IList<CTA> Users { get { return _...
首先,枚举可以用来替代传统的常量类,后者往往通过public static final字段来定义一组相关的常量。枚举的优势在于它们是类型安全的,不允许添加、删除或修改枚举值,防止了运行时错误。此外,枚举天然支持单例模式...
3. **Public/Private/Static/Void/Main**:`public`是访问修饰符,表示该类、方法或变量可以被任何其他类访问。`private`则限制了访问权限,只允许在声明它的类内部访问。`static`关键字用于创建类级别的变量或方法...
7. **static**:图片、JavaScript等静态资源目录。 8. **template**:模板源文件目录,用于存放前端页面的模板文件。 9. **uc_client**:UCenter客户端接口目录,用于与UCenter服务器端进行通信。 10. **uc_server**...
支持JSDoc和Closure Compiler标签:@ class,@ description,@ enum,@ export,@ function,@ implements,@ interface,@ param,@ private,@ returns或@ return,@ static,@ template,@ type,@ memberOf和@...
public static String camelToUnderline(String param) { // 实现代码略 } ``` 此外,@JsonProperty注解是Jackson库提供的一个功能,可以让开发者自定义在序列化和反序列化过程中JSON字段的名称,这样可以在字段上...
12. **Member-variable** 和 **Member-function**:成员变量是类内部的变量,成员函数是类内部的方法。 13. **Access Modifiers**:访问修饰符,如`public`, `private`, `protected` 和 `default`,控制类的成员对...
16. **member-variable**和**member-function**:类的成员变量和成员函数,是类定义的一部分,属于类的实例。 17. **public**、**private**、**protected**和**default**:访问修饰符,控制类的成员对其他代码的...
15. **类方法和实例方法**:类方法由`static`修饰,不依赖于实例,可以直接通过类名调用;实例方法与对象关联,需通过对象调用。 16. **方法和变量命名规则**:遵循驼峰命名法,首字母小写,后续单词首字母大写。 ...
19. **member-variable** 和 **member-function**: 类的内部变量和方法,属于类的成员。 20. **public**、**private**、**protected** 和 **default**: 访问修饰符,用于控制类成员的可见性。 21. **static**: ...
31. **Static**:静态,修饰符,表示类级别的变量或方法,不依赖于对象实例。 32. **Void**:无,表示方法没有返回值。 33. **Extends**:继承,子类从父类继承属性和方法。 34. **Parent Class**:父类,被其他...
31. **Static**:静态,修饰符,表示类级别的变量或方法,不依赖于对象实例。 32. **Void**:无,表示方法没有返回值。 33. **Extends**:继承,子类继承父类的属性和方法。 34. **Parent Class**:父类,被其他...