После некоторых исследований о том, как писать модульное пространство / пространство имен в javascript, я понял, что следующее может быть хорошей идеей о том, как инкапсулировать функцию / объект:
var MODULE = (function (parent) {
var OB = parent;
var TH = this;
parent.num = 10;
// method 1 - works ok, because we use normal function, "this" works as expected, returns 11
parent.oneMore = function () {
return this.num + 1;
};
// method 2 - works ok, returns 12
parent.twoMore = () => { return parent.num + 2;};
// method 3 - works ok, returns 13
parent.threeMore = () => OB.num + 3;
// method 4 - does not work, returns NaN
parent.fourMore = () => TH.num + 4;
// adding a property/method - which way would be better?
parent.n1 = 100;
OB.n2 = 200;
this.n3 = 300; // non-sense
TH.n4 = 400; // also non-sense
return parent;
}(MODULE || {}));
(function (m) {
console.log(m.oneMore());
console.log(m.twoMore());
console.log(m.threeMore());
console.log(m.fourMore());
console.log(m.n1);
console.log(m.n2);
console.log(m.n3);
console.log(m.n4);
})(MODULE);
Теперь проверьте функцию twoMore()
. При использовании функций массива мы знаем, что мы не можем передать использование this
напрямую.
Итак, вместо этого я решил использовать OB
, где OB = parent
.
Мой вопрос: есть ли разница между непосредственным использованием parent
или OB
? Что именно представляет parent
?
Кроме того, как объявить свойства и методы? Используя parent.prop = 1;
, или OB.prop = 1;
, или любым другим способом?