2015-02-09 3 views
0

Если я класс объявлен в prototype.jsСтатические методы в JavaScript

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

     }, 
     type: 'ClassFoo' 
}; 

Если я объявить метод ClassFoo.doBar = функция() {журнал ("Foobar")}

  1. Это то же, что/равносильно созданию статического метода в java?

  2. Может ли объект classfoo доступа doBar()?

ответ

1

Да, методы на конструкторе аналогичны статическим методам на других языках ООП. Они доступны в глобальном масштабе (или в любой области, в которой конструктор определен в), и не связаны с каким-либо конкретным экземпляром этого объекта (что в значительной степени является статическим методом).

Любой код в любом месте вашего проекта может получить к ним доступ как ClassFoo.doBar(). Ваши методы ClassFoo также могут получить к нему доступ. Других ярлыков для доступа к ним (даже из методов) нет.

Следует помнить, что функции в Javascript являются объектами и могут иметь свойства, как и любой другой объект в Javascript. Так, назначение:

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

только присвоение свойства объекта ClassFoo и его можно использовать как любую собственность на любом объекте.

ClassFoo.doBar(); 
+0

Статический метод в java может быть доступен экземпляром. Это не то же самое в Javascript? пожалуйста подтвердите ? – JavaDeveloper

+0

Может ли экземпляр класса foo access doBar()? – JavaDeveloper

+0

@JavaDeveloper - прочитайте мой второй параграф еще раз. – jfriend00

Смежные вопросы