javascript - javascript中同一类(对象)中的静态和非静态数据

标签 javascript object

据我了解,在 JavaScript 中创建类有两种方法

var MyObj = function(val)
{
  this.vari = val;
}

其中 val 将是非静态成员。

鉴于,

var MyObj = new Object();
MyObj.vari = "";

这是一个单一对象,因此它的成员的行为就像静态成员一样。我的问题是,我们如何在同一个类中同时拥有静态和非静态内容?

最佳答案

JavaScript 中没有类,只有对象。

当您创建一个新对象时,您是从函数的原型(prototype)“扩展”,而不是函数本身。为了使变量或函数看起来是静态的,您必须将其附加到用于创建对象的函数,而不是其原型(prototype)。

js> var Foo = function(){ this.member = "member"; };
js> Foo.staticMember = "staticMember";
js> var f = new Foo();

js> Foo.member;
undefined
js> Foo.staticMember;
"staticMember"
js> f.member;
"member"
js> f.staticMember;
undefined

关于javascript - javascript中同一类(对象)中的静态和非静态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217213/

相关文章:

Javascript 对象无法与 native javascript 方法(如 match()、替换等)一起使用

c++ myVector.erase(myVector.begin()) 有效但不在我的对象中

c++ - 在我的类 C++ 中创建一个对象

javascript - 我通过 jquery 字符串发送跨站点伪造 token ,但在下一页上我生成一个新 token ,然后它们的 token 永远不会匹配

javascript - 如何使 HTML Canvas 不可聚焦/不可选择

javascript - 在 JavaScript 中,我可以获取包含脚本的节点吗?

javascript - 如何过滤对象的所有属性?

Node.js 和 MongoDB,重用 DB 对象

javascript - jQuery 检查输入值是否在数组中

javascript - 有没有办法在 Angular 渲染到屏幕之前打印组件原始代码?