javascript 中命名空间类与实例的约定?

发布于 2024-11-16 12:44:22 字数 405 浏览 3 评论 0原文

我正在使用以下代码创建一个类的实例:

  test = new function(){
    ...
  }

但是,base 没有原型,因为它是从匿名函数创建的(我猜这就是原因?)。这使我无法为该实例创建任何公共函数。

你可能会说我可以通过简单地执行以下操作来解决这个问题:

  function testClass(){
    ...
  }
  test = new testClass()

然后将公共函数附加到 testClass。 但这迫使我进行不必要的命名空间。特别是,如果我将我的类命名为 this.is.a.space,那么我将如何称呼我的实例?这是一个空间实例吗?这是一个空间实例吗?

对于此类事情有约定吗?

I am creating a instance of a class using the following code:

  test = new function(){
    ...
  }

However, base has no prototype because it was created from an anonymous function (I'm guessing this is the reason?). This leaves me unable to create any public functions for the instance.

You could argue I could get around this by simply doing:

  function testClass(){
    ...
  }
  test = new testClass()

and then attaching public functions to testClass.
But this forces me to do unnecessary namespacing. In particular, if I were to name my class this.is.a.space, then what would I call my instance? this.is.a.spaceInstance? this.is.a.space.Instance?

Is there a convention for this sort of thing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

海夕 2024-11-23 12:44:23

您仍然可以编写匿名函数并使用 .__proto__ 访问其原型,如下所示:

test = new function(){
    ...
};

test.__proto__.foo = function() { return 1 };

但是,您只有一个实例,因此您也可以使用:

test.foo = function() { return 1 };

我不完全确定您到底是什么尝试完成,但至于命名,通常将类命名为 SomeClass ,其他变量(如实例)则命名为 someVariable 。 JavaScript 区分大小写,因此您可以使用 TestClass/testClass

You can still code the anonymous function and use .__proto__ to access its prototype like this:

test = new function(){
    ...
};

test.__proto__.foo = function() { return 1 };

However, you only have one instance so you could also just use:

test.foo = function() { return 1 };

I'm not completely sure what exactly you're trying to accomplish, but as for the naming, it is usual to name the class like SomeClass and other variables (like instances) along the lines of someVariable. JavaScript is case-sensitive so you could use TestClass/testClass.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文