2015-02-09 188 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