Почитал статей на данную тему. Мне показался интересным нижеизложенный подход хотя это не копия одного из уже существующих способов о которых мне удалось прочитать.
Здесь создается объект с кодом методов внутри объекта а его прототип перекладывает вызовы на внутренние методы. Конструктор вызывается с помощью "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))
Кто нибудь еще использует схожие конструкторы объектов?