Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP的JavaScript/TypeScript equiralvant';类常量_Javascript_Typescript - Fatal编程技术网

PHP的JavaScript/TypeScript equiralvant';类常量

PHP的JavaScript/TypeScript equiralvant';类常量,javascript,typescript,Javascript,Typescript,PHP有一些内置的魔法常量,其中一个是::class。由于我正在使用NodeJS+TypeScript构建越来越多的应用程序,我想知道下面的PHP代码的JavaScript/TypeScript等价物是什么 我尝试使用下面的方法,但这显然不是一个正确的数组值 那么如何调用该方法呢?在PHP中,符号与JS中的值不同。我们不能在PHP中传递类,只能传递它们的名称。这在PHP中有效,因为类名是全局唯一的(包括名称空间) 在Javascript中,类是“第一类”,并且与它们的名称断开连接。它们不是全球唯

PHP有一些内置的魔法常量,其中一个是
::class
。由于我正在使用NodeJS+TypeScript构建越来越多的应用程序,我想知道下面的PHP代码的JavaScript/TypeScript等价物是什么

我尝试使用下面的方法,但这显然不是一个正确的数组值


那么如何调用该方法呢?

在PHP中,符号与JS中的值不同。我们不能在PHP中传递类,只能传递它们的名称。这在PHP中有效,因为类名是全局唯一的(包括名称空间)

在Javascript中,类是“第一类”,并且与它们的名称断开连接。它们不是全球唯一的。所以这个前提对我来说没有多大意义。您不应该只传递名称,因为仅使用名称无法确定它是什么类

然而,这里有一些类似于你需要的东西

如果我们将
[class,staticMethod]
结构视为您希望能够调用的单个值,那么最简单的方法是使用:

const callable = Foo.method;

// callable
callable();
这在Javascript中非常自然。在PHP中,用于引用可调用对象的数组语法有点不成熟,因此它不是您真正想要复制的模型

如果出于某种原因,您希望有一个具有方法名和对其类的引用的值,则不需要按名称执行(这不是全局唯一的),而是按引用执行

const callable = [Foo, 'method'];

// Call it:
callable[0][callable[1]]();

进入一门新的语言,重复使用你从旧语言中习惯的模式是很诱人的;但Javascript模型有着显著的不同。无论您实际想要实现什么,可能都有一个对JS更自然的解决方案。

在PHP中,符号与JS中的值不同。我们不能在PHP中传递类,只能传递它们的名称。这在PHP中有效,因为类名是全局唯一的(包括名称空间)

在Javascript中,类是“第一类”,并且与它们的名称断开连接。它们不是全球唯一的。所以这个前提对我来说没有多大意义。您不应该只传递名称,因为仅使用名称无法确定它是什么类

然而,这里有一些类似于你需要的东西

如果我们将
[class,staticMethod]
结构视为您希望能够调用的单个值,那么最简单的方法是使用:

const callable = Foo.method;

// callable
callable();
这在Javascript中非常自然。在PHP中,用于引用可调用对象的数组语法有点不成熟,因此它不是您真正想要复制的模型

如果出于某种原因,您希望有一个具有方法名和对其类的引用的值,则不需要按名称执行(这不是全局唯一的),而是按引用执行

const callable = [Foo, 'method'];

// Call it:
callable[0][callable[1]]();

进入一门新的语言,重复使用你从旧语言中习惯的模式是很诱人的;但Javascript模型有着显著的不同。无论您实际想要实现什么,都可能有一个对JS更自然的解决方案。

method=Foo.prototype.method
。然后,您可以
method(param1,param2)
method.call(someObject,param1,param2)
假设它是一个静态方法-只需执行
Foo['method']()
method=Foo.prototype.method
。然后您可以
method(param1,param2)
method.call(someObject,param1,param2)
假设它是一个静态方法-只需执行
Foo['method']()