不管这种命名方案是否明智,以下是否有效?
var F = function() { this.f1 = function() {} } F.f1 = function() {} // "static" call var v1 = F.f1(); // prototype call var f = new F(); var v2 = f.f1();
看起来应该没问题,因为例如,对象函数中的 var
和 this
变量不共享相同的空间。
最佳答案
是的,这是有效的。
在您的示例中,F
是一个函数,您为其分配一个名为 f1
的属性,该属性本身就是一个函数。如果将代码更改为 f = new F()
,则 f
是一个继承自 F
原型(prototype)的对象,但它们仍然是两个不同的对象。
关于javascript - 在 javascript 对象中, "static"函数和原型(prototype)函数是否共享相同的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6773044/