, если я правильно понял ES6, используя class
, имеет такой же эффект, как если бы вы вводили синтаксическую ошибку
var Foo = function(){}
var Bar = function(){
Foo.call(this);
}
Bar.prototype = Object.create(Foo.prototype);
Bar.prototype.constructor = Bar;
при вводе MyClass()
без keyword new
, чтобы предотвратить загрязнение глобального пространства с помощью переменные, предназначенные для использования объектом.
var MyClass = function(){this.$ = "my private dollar"; return this;}
, если у вас есть
// $ === jquery
var myObject = new MyClass();
// $ === still jquery
// myObject === global object
, но если вы делаете
var myObject = MyClass();
// $ === "My private dollar"
, поскольку this
в Конструктор, называемый функцией, относится к глобальному объекту, но при вызове с ключевым словом new
Javascript сначала создает новый пустой объект, а затем вызывает на нем конструктор.