2015-02-09 133 views
0

如果我有一个类中的prototype.js静态方法

var ClassFoo = Class.create(); 
ClassFoo.prototype = { 
     initialize: function() { 

     }, 
     type: 'ClassFoo' 
}; 

宣布如果我声明的方法ClassFoo.doBar =函数(){日志( “foobar的”)}

  1. 它是否等同于在java中创建静态方法?

  2. classfoo的对象可以访问doBar()吗?

回答

1

是的,构造函数的方法类似于其他OOP语言中的静态方法。它们在全局(或者在构造函数定义的任何范围内)都是可用的,并且不与该对象的任何特定实例(这几乎就是静态方法)相关联。

您项目中任何位置的任何代码都可以以ClassFoo.doBar()的身份访问它们。你的方法ClassFoo也可以这样访问它。没有其他快捷方式可以访问它们(甚至可以使用方法)。

有一点需要记住的是,Javascript中的函数是对象,并且可以像Javascript中的任何其他对象一样具有属性。因此,分配:

ClassFoo.doBar = function() {...}; 

只是将属性分配给ClassFoo对象,它可以像任何对象上的任何属性一样使用。

ClassFoo.doBar(); 
+0

java中的静态方法可以被实例访问。那在Javascript中不一样?请确认 ? – JavaDeveloper 2015-02-09 23:40:20

+0

可以一个classfoo的实例访问doBar()吗? – JavaDeveloper 2015-02-09 23:40:45

+0

@JavaDeveloper - 请再读一遍我的第二段。 – jfriend00 2015-02-09 23:54:39