2015-10-19 3 views
0

Мне хотелось бы узнать, есть ли имя для шаблона (это шаблон?), Который я использую. Например, вместо использования, как это:методы вызова методов внутри объекта

var MyFakeClass = function(propertie) { 
this.propertie = propertie 

this.init(); 
}; 

MyFakeClass.prototype.method = function() { 
// something here 
}; 

var instanceOfFakeClass = new MyFakeClass('propertie'); 
instanceOfFakeClass.method(); 

я следующим образом:

var MyFakeClass = { 
init: function(propertie) { 
    this.propertie = propertie; 
    this.method(); 
}, 

method: function() { 
    // something here 
} 
}; 

MyFakeClass.init('propertie'); 

Таким образом, метод инициализации вызывает метод, я не нужен вызов с внешней стороны.

Спасибо.

+0

Внутри * init *, * этот * будет * MyFakeClass *, вы не создаете экземпляры. Где вы создаете экземпляры? – RobG

+1

Если вы хотите поместить блестящее имя в свой код, назовите его * singleton * или * module * или просто * object *. – Bergi

+0

@ RobG Нет, она не. Так что, как говорит Берги, это действительно ** singleton **. – Leo

ответ

1

Есть много различных способов, чтобы описать это и, вероятно, ни одна клички, которая всегда используется для этого:

  1. Object буквального
  2. Статический объявлен объект
  3. Статический объявлено одноточечно

«Синглтон», вероятно, является полезным словом здесь, потому что он описывает объект, из которого только предполагается быть одним из. Существует много разных способов объявить синглтон. Ваша декларация является одним из таких способов.

«Статически объявлено» отличает ваш второй вариант от первого с конструктором, созданным с помощью new.

+0

ECMA-262 также называет его инициализатором [* object *] (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-object-initializer). – RobG

+0

@RobG - «Инициализатор объектов» - это заголовок этого раздела в спецификации, и грамматика определяет его как «ObjectLiteral». «Object Literal» - довольно распространенное описание для статически определенного объекта, подобного этому, в обычном разговоре о коде Javascript. «Literal» - это слово, которое обычно отличает то, что объявлено с синтаксисом определения объекта. Я лично не слышал, чтобы кто-то называл это «инициализатором объекта», хотя, конечно, в этом описании можно увидеть логику здравого смысла. Использование слова «singleton» поможет описать намерение дизайна. – jfriend00

+0

Конечно, поскольку вы указали различные имена, я просто указывал еще один. Написание «инициализатора» было изменено в ECMAScript 2015. – RobG

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