Конструкторы и классы в JavaScript — важная часть объектно-ориентированного языка программирования. На основе классов и конструкторов создаются объекты; конструкторы могут быть встроенными и написанными программистом. В JavaScript используется прототипное наследование (даже после появления классов и реализации ключевого слова extends). Код из этого примера можно взять тут http://codepen.io/htmllab/pen/WGKqzY.
Конструкторы и классы в JavaScript
Реализация наследования до появления классов в ECMA-262:
var User = function(name, age){ //Конструктор User
this._name = name;
this._age = age;
}
...
var Admin = function(name, age, type){ // Конструктор Admin
User.call(this,name,age);
this.type = type;
}
Admin.prototype = new User();
Admin.prototype.constructor = Admin;
В приведенном коде родительский конструктор User.call(this,name,age)
применяется к экземпляру объекта Admin, а этому экземпляру добавляется свойство type.
Весь код примера:
var User = function(name, age){ //Конструктор User
this._name = name;
this._age = age;
}
User.defaultUser = function (){
return new User("гость",20);
}
User.prototype = {
set name (name){ this._name = name;},
get name (){ return "Товарищ " + this._name;},
set age (age){ this._age = age;},
get age (){ return this._age;}
};
User.prototype.show = function(){
console.log(this.name);
console.log(this.age);
}
User.prototype.toString = function(){
return this.name;
}
var user1 = new User('John',45);
var Admin = function(name, age, type){ // Конструктор Admin
User.call(this,name,age);
this.type = type;
}
Admin.prototype = new User();
Admin.prototype.constructor = Admin;
var user2 = new Admin("Вася",26,"сисадмин");
var user3 = User.defaultUser();
document.write(user3);