В объекте, по не более чем чисто эстетическим причинам, мне интересно, есть ли способ разрешить доступ к элементам 'this' изнутри подобъектов.
Возьмите этот пример (который я 'отражено в http://jsfiddle.net/Wzq7W/5/):
function BlahObj() {
this.users = {};
}
BlahObj.prototype = {
userGet: function(id) {
if (this.users[id] !== undefined) {
return this.users[id];
}
},
userAdd: function(id, name) {
if (this.users[id] === undefined) {
this.users[id] = name;
}
},
user: {
get: function(id) {
if (this.users[id] !== undefined) {
return this.users[id];
}
}
}
}
var test = new BlahObj();
test.userAdd(1, 'User A');
test.userAdd(2, 'User B');
test.userAdd(3, 'User C');
test.userGet(2);
test.user.get(1);
Метод userGet () будет правильно возвращать «Пользователь B», но из-за области действия user.get () не может получить доступ к базовому члену.
В контексте, этот объект будет иметь гораздо больше членов и методов, которые идут вместе с ним, поэтому верблюжий корпус кажется таким грязным: возможность разделить их по группам (user.get (), queue.foo (), room.data()) кажется более подходящим в теории. Насколько это практично? Есть ли способ сделать то, что я прошу, так, как я этого хочу, или мне было бы лучше с camelCase?
Спасибо за ваши мысли!