2015-02-02 3 views
0

Есть ли - если есть - разница между этими двумя экземплярами? В чем разница, если она существует?Разница между объектными творениями JavaScript

Первое:

function MyClass() { 
    var vm = this; 

    vm.initialise = function() { console.log('initialised'); } 

    return vm; //<-- here 
} 

Второго:

function MyClass() { 
    var vm = this; 

    vm.initialise = function() { console.log('initialised'); } 

    //<-- here 
} 

Использование:

var newClass = new MyClass(); 
+3

@ FrédéricHamidi Я не думаю, что при использовании ключевого слова 'new'. –

+0

@SecondRikudo, ты прав. После прочтения спецификации снова все работает нормально, даже если 'this' псевдонимы в конструкторе и возвращается псевдоним. –

+0

@DavidBarker Я на полпути, написав его. –

ответ

6

При использовании new ключевого слова, функция Функции конструктора будет возвращать this по умолчанию.

Поскольку ваши две опции: «Использовать возвращаемое по умолчанию значение» и «Явным образом возвращать this», нет никакой разницы между этими двумя подходами.


идиоматические подход был бы не иметь явного возвращаемого значения, а также не создавать vm в первую очередь и просто ссылаться на this непосредственно.

+0

Приветствия, не думал, что есть, хром консоли не показывают разницу –