Заметки WEB-разработчика

Полезные материалы для web-разработки

Один из способов наследования в javascript

В этой статье пойдет речь о прототипном наследовании в javascript.

Один из способов наследования в javascript

Прототип - объект от которого другой объект наследует свои свойства.

Что нужно помнить о прототипе.

  • У каждого объекта есть свой  прототип.
  • Если свойство не найдено у текущего объекта оно ВСЕГДА ищется в прототипе объекта (по цепочке прототипов до самого главного объекта).
  • В свойстве __proto__ хранится прототип. Это свойство можно увидеть в браузере Chrome. Свойство не кроссбраузерное.
  • Свойство __proto__ имеют все объекты, в том числе и массивы

  • Т.к. свойство __proro__ не кроссбраузерное, использовать надо сввойство prototype. Свойство prototype используется для указания прототипа текущего объекта (откуда брать прототип). Это свойство существует у каждой функции.

Пример

var Human = function(name){
   this.name = typeof name == 'undefined' ? 'noname' : name;
   this.go = function (){
      console.log('i`m going');
   }
}

var Boy = function(){
   this.sex = 'm';
   this.beard = true;
   this.fuck = function (){
      console.log('I fuck a girl');
   }
}

var Girl = function(){
   this.sex = 'f';
   this.beard = false;
   this.fuck = function (){
      console.log('I fuck a guy');
   }
}

Boy.prototype = new Human;
Girl.prototype = new Human('Sally');

var girl = new Girl();
var boy = new Boy();

console.log(girl);
console.log(boy);

Можно увидеть прпототип объекта Girl:

Полезные методы

Узнать прототип текущего объекта

// узнаем прототип объекта
var protoOfGirl = Object.getPrototypeOf(Girl);

Т.е. возвращает результат ссылки __proto__ объекта Girl

Принадлежит ли св-во данному объекту

girl.hasOwnProperty('sex');

Принадлежит ли объект конструктору

var x = new Array(10);
if (x instanceof Array) {
    alert('x is array');
}

Комментарии

Комментарии через Вконтакте