Показать сообщение отдельно
  #1 (permalink)  
Старый 15.12.2014, 11:38
Интересующийся
Отправить личное сообщение для JS2DX Посмотреть профиль Найти все сообщения от JS2DX
 
Регистрация: 20.04.2014
Сообщений: 23

Инициализация объекта
Почитал статей на данную тему. Мне показался интересным нижеизложенный подход хотя это не копия одного из уже существующих способов о которых мне удалось прочитать.

Здесь создается объект с кодом методов внутри объекта а его прототип перекладывает вызовы на внутренние методы. Конструктор вызывается с помощью "call()". Создается изоляция внутренних данных и кода что позволяет менять содержимое прототипов без последствий для кода методов.


function tester(){
  var data = ['a','b'],
      ini = function(){
        this.getData = function(_i){return data[_i]},
        this.setData = function(_i){data[_i] = 'new';return true;}
      }
  ini.call(this)
}


tester.prototype = {
  getData: function(_i){return this.getData(_i)},
  setData: function(_i){return this.setData(_i)}
}


var t1 = new tester()
var t2 = new tester()

console.log(t1.getData(0))
console.log(t2.getData(1))
console.log(t2.setData(1))
console.log(t1.getData(1))
console.log(t2.getData(1))

  • a
    b
    true
    b
    new


Кто нибудь еще использует схожие конструкторы объектов?
Ответить с цитированием