【发布时间】:2014-01-24 06:11:24
【问题描述】:
在 PHP 中,你可以这样做:
class myClass() {
function doSomething(someVar) {
// do something here
}
// etc... (other methods and properties)
}
然后,当然,您可以在实例化类之后调用该方法,如下所示:
$myObj = new myClass();
$myObj->doSomething();
但您也可以选择将该方法作为独立函数调用,而不实例化类(但您必须注意该函数中的依赖项),如下所示:
myClass::doSomething();
我相信这是为 C++ 借来的东西...
它被称为范围解析运算符(PHP 代码中的 Paamayim Nekudotayim...)
http://en.wikipedia.org/wiki/Scope_resolution_operator#PHP
http://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php
你会如何在 JavaScript 中做类似的事情?这似乎是不可能的。 也许我以错误的方式处理这个问题,我应该透露我正在努力实现的目标......
我只是有一个函数,它是这样的:
function submitContactForm(form) {
// pretty JavaScript...
}
我很高兴它是一个函数。但我想实现一个“resetContactForm()”,但希望以某种方式将它附加到 submitConatctForm 函数。
我知道我可能会这样做:
var contactForm = {
"submit" : function(form) {
//...
},
"reset" : function(form) {
//...
}
}
我会这样回答我自己的问题......
但是,除了我不喜欢这种语法并想避免它之外,还有一个事实是上面的结构不能用作类定义,它与PHP中的不同。 .. 回到最初的问题:有没有办法让 JavaScript 结构同时用作类定义和独立函数的集合?
【问题讨论】:
-
这不是 JSON 语法,它是 JavaScript 的对象语法,如果没有任何特殊字符,则不需要引号。 Paamayim Nekudotayim 在 JavaScript 中没有位置,因为没有类,没有静态方法。
-
好吧,引号不会受到伤害。不管怎么说,还是要谢谢你。我已经从我的帖子中删除了“JSON”。
-
Javascript doesn't have classes 因此范围解析运算符没有用处。按照该链接中的建议将方法附加到 Javascript 中的对象。就像@Deepsy 刚刚说的那样。
-
您只能将
::用于静态函数和常量。您不仅可以选择使用->或::,还可以将->用于实例化对象的函数和常量,并将::用于类的静态函数和常量。
标签: javascript php class oop scope-resolution