Я изучаю ООП и как работают фреймворки, такие как jQuery. Если я создаю класс с методами, которые изменяют свойства класса, он меняет его для всех вызовов переменных:
class test{
constructor(selector) {
this.el = document.querySelectorAll(selector);
return this;
}
find(selector) {
this.el = this.el[0].querySelectorAll(selector); //well...
return this;
}
}
function x(selector){ return new test(selector); }
var p = x('#parent'); //returns #parent
var c = p.find('#child') //returns #child
console.log(p); //returns #child too!
Но если я использую jQuery, он работает так, как мне нужно:
var p = $('#parent'); //returns #parent
var c = p.find('#child') //returns #child
console.log(p); //returns #parent
Я понимаю, что метод "find" заменяет свойства класса, а переменная "p" похожа на ярлык для экземпляра класса. Но как заставить его работать так, как он работает в jQuery?