|
|
1
925
(像java、C++或C语言) 我假设您正在尝试创建一个与“类型”关联的变量或方法,但不与实例关联。
更新:
ES6引入了
declare classes
让我们看看上面用ES6类实现的示例:
|
|
|
2
558
例如,引用(现已消失)文章中给出的示例 Static variables in Javascript :
这可能是一个比用全局变量争论全局名称空间更好的解决方案。
这会得到相同的结果——除了这次返回递增的值,而不是显示。 |
|
|
3
104
通过IIFE(立即调用的函数表达式)执行此操作:
|
|
4
41
this post 最能描述它,所以我想与您分享。 下面是从中提取的一些代码,我已经对其进行了修改,以获得一个完整的示例,希望能够为社区带来好处,因为它可以用作类的设计模板。 它也
根据该示例,您可以访问
对象属性/函数 简而言之:
closure :
你甚至可以定义
接球手和接球手
它定义了属性
以下语法同样有效:
用法:
笔记:
以避免意外行为,以免您忘记
现在,以下两个实例化将按预期工作:
“new”语句创建一个新对象并复制所有属性和方法,即。
在某些情况下,使用
现在打电话
here . 如果你想继承更多的遗产,我建议你 this . 这个 article series 我上面提到的是 强烈推荐
笔记 那 automatic semicolon insertion JavaScript的“特性”(如6所述)通常会导致代码中出现奇怪的问题。因此,我宁愿将其视为一个bug,而不是一个特性。 如果你想读更多, here MSDN文章 关于这些主题,这里描述的一些主题提供了更多的细节。 是什么 此外(也涵盖上述主题)还有来自 MDN JavaScript Guide
如果你想知道如何
仿效c#
你们这些
(它没有JavaScript控制台,除非您使用
并打开控制台选项卡)可能会发现以下代码段很有用。它允许您使用
|
|
|
5
39
您可以使用arguments.callee存储“静态”变量(这在匿名函数中也很有用):
|
|
6
31
ECMAScript 6
,您可以使用
可以指定给的属性
|
|
|
7
29
|
|
|
8
16
以下示例和解释来自Nicholas Zakas的《面向Web开发人员的专业JavaScript第二版》。这是我一直在寻找的答案,所以我认为在这里添加它会有所帮助。
|
|
|
9
15
如果您正在使用新的 class syntax 然后,您现在可以执行以下操作:
这有效地在JavaScript中创建了一个静态变量。 |
|
|
10
8
如果您想声明静态变量以在应用程序中创建常量,那么我发现以下方法是最简单的方法
|
|
11
8
关于
下面是一个演示如何创建静态变量的示例
为了访问静态变量,我们使用
|
|
|
12
7
还有其他类似的答案,但没有一个能吸引我。以下是我最终得到的结果:
|
|
13
7
除其他外,目前还有一份草案(
stage-2 proposal
ECMA Proposals
介绍
使用提案中的示例,建议
然后,您可以通过
你可以随时了解新的提案
transform class properties
你可以使用的插件。此外,尽管仍在进行中,
|
|
14
6
您可以像下面这样在JavaScript中创建一个静态变量。在这里
您可以使用
|
|
|
15
5
将变量替换为以下内容:
|
|
|
16
5
有4种方法可以在Javascript中模拟函数局部静态变量。 方法1:使用函数对象属性 (旧浏览器支持)
(旧浏览器支持)
方法3:使用闭包,变体2
方法4:使用闭包,变体3 (需要对EcmaScript 2015的支持)
|
|
17
4
JavaScript中最接近静态变量的是全局变量——这只是在函数或对象文本范围之外声明的变量:
您可以做的另一件事是在对象文本中存储全局变量,如下所示:
然后像这样访问变量:
|
|
18
4
好的,另一种方法来看看这些方面的最佳实践,就是看看coffeescript是如何翻译这些概念的。
|
|
19
4
它避免了顶级全局变量(即Window.myglobal)的范围、生存期、语义、动态等方面的所有麻烦。我不知道它的效率有多高,但这对于以适当速率访问的少量数据来说并不重要。 以“sessionStorage.mydata=anything”的形式轻松访问,并以类似方式检索。看见 “JavaScript:权威指南,第六版”,David Flanagan,ISBN:978-0-596-80552-4,第20章,第20.1节。通过简单的搜索,您可以轻松地将其下载为PDF格式,或者在您订阅的O'Reilly Safaribooks中下载(价值黄金)。 |
|
20
2
在JavaScript中,变量是 静止的 默认情况下。 实例 :
|
|
|
21
1
Closures -闭包的副本与保留的数据一起运行。
ES5函数类 Object.defineProperty ( O, P, Attributes )
使用创建了一些方法 `` ,以便每一次都能轻松理解函数类。
下面的代码片段是关于每个实例都有自己的实例成员和公共静态成员副本的测试。
ES6类:ES2015类是对基于原型的OO模式的简单补充。使用一个方便的声明形式可以使类模式更易于使用,并鼓励互操作性。类支持基于原型的继承、超级调用、实例和静态方法以及构造函数。 Example 参考我以前的帖子。 |
|
22
1
你可以定义
static functions in JavaScript
在撰写本文时,仍然无法在类中定义静态属性(函数除外)。静态属性仍然是一个问题 Stage 3 proposal
|
|
23
1
2021年更新
在2021年,您只需使用
|
|
24
0
|
|
|
25
0
在使用jQuery的MVC网站上工作时,我希望确保某些事件处理程序中的AJAX操作只能在前一个请求完成后执行。我使用“静态”jqXHR对象变量来实现这一点。 给定以下按钮:
我通常使用这样的生活作为我的点击处理程序:
|
|
|
26
0
如果您想使用原型,那么有一种方法
执行此操作,您将能够从任何实例访问计数器变量,并且属性中的任何更改都将立即反映!! |
|
|
27
0
面向对象编程实际上有两种不同的风格,一种是“基于类”(C++、C#、Java等),另一种是“原型”(Javascript)。在基于类的语言中,“静态属性”应该与类关联,而不是与实例化的对象关联。这个概念实际上在Javascript这样的原型语言中更直观,因为您只需将属性指定为父原型的值,就像这样。
然后从这个构造函数实例化的每个对象访问它,就像这样。。。
首先确保通过将构造函数封装在另一个函数(如jqueryready方法)中,将其从全局命名空间中隐藏
第二,也是最后一点,即使您这样做,属性仍然可以从您自己脚本的任何其他部分编辑,因此可能是代码中的错误将属性写入其中一个子对象,并将其与父原型分离,因此,如果更改父属性,它将不再级联并更改子对象的静态属性。
See this jsfiddle.
在不同的情况下,我们可以
在我看来,基于类的“静态属性”概念和这个Javascript实现之间似乎没有完美的相似之处。因此,我认为从长远来看,使用一种更为Javascript友好的不同代码模式可能会更好。例如一个中央数据存储或缓存,甚至一个专用的helper对象来保存所有必需的静态变量。 |
|
|
28
0
我没有在任何答案中看到这个想法,所以只是把它添加到列表中。如果它是重复的,请让我知道,我会删除它并更新另一个。 我在我的网站上创建了一种超级全球化。由于每次页面加载时都会加载几个js文件,而其他几十个js文件只在某些页面上加载,所以我将所有“全局”函数都放在一个全局变量中。
然后我需要几个全局辅助函数
这当然是一个全局的,而不是静态的,但因为它在每次页面加载时都会重新初始化,所以它实现了相同的目的。 |
|
29
0
|
|
|
30
0
对于私有静态变量,我发现如下方法:
|