日期:2014-05-16  浏览次数:20465 次

---------------- JS 中实现静态属性-------------------

通常情况下 ,大家都用 prototype 为类定义非静态的属性

那么要为类定义一个静态的属性

如题,我想在一个自定义类中实现静态

------解决方案--------------------


var s = function(){
this.a = function(){
alert('aa');
};
var b = function(){
alert('bb');
};
};

var t = new s();
s.a();
s.b();


------解决方案--------------------
function xxx()
{}

xxx.xx="xxx";//定义静态属性
------解决方案--------------------
<script type="text/javascript">
var xx = new Function();
xx.prototype.static = {
version : "1.1.1"
};

var a = new xx;
var b = new xx;
a.static.version = "2.2.2";
alert(b.static.version);
</script>
------解决方案--------------------


s.a(); 
s.b(); 

---

sorry
应该是 t.a();t.b();

调用一下就知道了,在类里面用this.property||method 可以实现属性和方法私有

针对你提出的问题:
可以直接 var d = {
a:function(){
//
};
b:'bb';
};

这样可直接去访问: d.a();d.b();
不再需要实例化

------解决方案--------------------
JScript code
function Test(){
    this.name="test";
}
Test.sName = "sName";
var t = new Test();

alert(t.name);
alert(t.sName);
alert(Test.sName);

------解决方案--------------------
到... new 就不是静态了,,,
你直接用 Object 就行了.............

------解决方案--------------------
这样就可以了
<script language="javascript">
function uclass(){
}
//静态属性
uclass.Name="sample";
//静态方法
uclass.test=function(){
 alert(1);
}
alert(uclass.Name)
</script>
------解决方案--------------------
属性器嘛...啥静态属性...
------解决方案--------------------
FF里有__defineSetter__
IE里实现不了,最多只可以用toString模拟__defineGetter__
------解决方案--------------------
静态属性就是不用prototype直接加到对象上。

/* 这是一个实例方法 */
String.prototype.instanceMethod = function() {}

/* 这是一个静态方法 */
String.staticMethod = function() {}