在classA函数体外,定义一个
ClassA.propotype.price = 120;
这个就是静态的!
ClassA.propotype.price = 120;
这个就是静态的!
解决方案 »
- 提交表单 必须每项都有选择时选择才能提交表单 否则弹出提示窗口:“请选择XXX!”
- Ext的下拉框不管选什么都是第一项。怎么解决?急!!!
- 在一个超级链接的onclick发生后如何使用js改变onclick的值?
- 图片滚动延时加载用js怎么实现
- extjs4 gridpanel 动态tbar
- 这个问题如何解决啊,设置动态加入的文本框的颜色!!!!!!!!!!!!!!!!
- 脚本中涉及中文路径问题
- 高分问个关于文本框输入格式的问题
- 如何让我的HTML页面在800*600和1024*768显示时一样都是完全显示,而没有滑动条?
- too difficult
- ExtJs:删除成功后刷新页面
- 求高人进来帮忙看个问题..
第一:js中的类也有静态变量。
第二:js中类的静态变量定义在类对象的prototype中。
第三:这个例子中的price不是类ClassA的静态变量,只是类ClassA对象的一个属性。
第四:什么是静态变量?建议好好看看面向对象设计,特别是楼上答案错误的。
第五:任意一个类ClassA的事例对象都访问不到price属性。
第六:建议你结贴。
好吧,准备结贴!JavaScript 本身也不是一个严格的面向对象的语言,不再深究。有些书籍上说JavaScript没有静态变量,我只是感觉这个类变量很像静态变量,ClassA的实例对象要访问price属性,可以通过 ClassA.price 来访问。如果说“js中类的静态变量定义在类对象的prototype中”,好像也不是 完全准确,静态变量不应该存储在每个实例里面,它应该只存储在一个地方,不是在每个类的实例里面,定义在 prototype 中,等于每个实例对象都存有一个副本。
ClassA.price=ClassA.prototype.price='xxx';
这样就满足了用类名也能访问,任意事例对象也能访问。另外,js中类的静态变量不是每个事例对象都有一个副本,而是每个事例对象公用一个变量。当一个静态属性(变量)为引用型变量时更容易体现出来。var ClassA=function(){};
ClassA.prototype.x={value:'x'};var b=new ClassA(),c=new ClassA();
b.x.value='c';
alert(c.x.value);//这里可以看出b和c的x属性是同一个对象。//另外一种修改方式
b.x='c';//这个跟上面不太一样,这里修改了对象b的x属性,简单点就是对象b有了自己的x属性,这里x并不是类ClassA静态变量x的副本。有点像继承,但又不能用继承的思路来考虑它。
以js的面向对象来说,函数也是对象,所以只是给ClassA对象增加了一个成员而已就算从效果上,也不是,静态变量是全局的,而这个变量的作用域要看ClassA的作用域,如果ClassA是在局部定义的函数,那它的成员也就同样不具有全局性了
var class=function(){};
class.staticValue=“”;//定义静态变量
class.staticMethod=function (){};//定义静态方法
静态变量和静态方法只能由class来调用,实例不可调用,否则出错。