javascript - 如何使用静态方法访问类中的变量?

标签 javascript

//my class
function myClass()
{
   this.pubVar = 'hello public';
   var priVar = 'hello private';


}

myClass.staticMethod = function()
{

   //how do i access thos variables here

}

我尝试了 alert(this.pubVar)alert(priVar) 但没有成功。我做错了什么?

我要稍微改变一下问题.. 我第一次没有很好地解释它。

如何在类中声明静态变量?

我知道使用 Java 很简单,您只需将 static 放在变量类型的前面,然后您就得到了一个静态变量。我似乎找不到 javascript 的选项..

最佳答案

既然你想在你的方法中使用对象的实例,我认为你并不是真的想创建一个静态方法,你想要的是一个适用的方法并且所有实例均可访问。

为此,您可以扩展构造函数的 prototype :

function MyClass() {
   this.pubVar = 'hello public';
   var priVar = 'hello private';
}

MyClass.prototype.myMethod = function() {
   alert(this.pubVar);
}


var instance = new MyClass();
instance.myMethod(); // alerts 'hello public'

当您扩展构造函数的原型(prototype)时,驻留在其上的所有成员都将继承到使用 new 创建的对象实例运营商。

因此您只在构造函数中定义此方法一次,并且在每个实例的上下文中都可以访问它(方法中的 this 关键字指的是对象实例)。

关于javascript - 如何使用静态方法访问类中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1295477/

相关文章:

javascript - 使用jquery过滤下拉列表中的多个值

javascript - 在 React 中使用 velocity.js 动画

javascript - 如何在jsp端显示类似 "Please wait"的加载消息?

javascript - JSON 数据未 append 到 div

javascript - Nodemon -w 保持启动,但不运行服务器

javascript - Fancybox - 无法使用 jQuery 设置 CSS?

javascript - Chrome 调试器的模板文字问题

javascript - 不设置密码,环回无法更新扩展模型

javascript - iOS 7 中横幅/网页右侧不需要的空间条

javascript - webpack browserify --ignore 等效项?