Опубликовано Оставить комментарий

Конструкторы и классы в JavaScript

Конструкторы и классы в JavaScript
Конструкторы и классы в JavaScript

Конструкторы и классы в 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);
Добавить комментарий