если я правильно понимаю, то вы хотите по вызову this.val в любом месте кода получать значение объекта , но это же не правильно.
Ваш случай следующий:
let m = new mock();
m.log.start();
m.log.stop();
про this в браузере this вне какого-либо объекта будет ссылаться на window
в ноде на объект ноды, который в себе много чего содержит (global, module, process и тп)
Или вы про это?
function mock(number) {
this.number = number;
this.val = 'val';
this.log = {
start: function() {
this.timer = setInterval(function() {
console.log(this.number, ": ", this);
}.bind(this), 1000);
}.bind(this),
stop: function() {
clearInterval(this.timer);
delete this.timer;
}.bind(this)
};
}
m = new mock('1')
> mock {number: "1", val: "val", log: Object}
n = new mock('2')
>mock {number: "2", val: "val", log: Object}
m.log.start(); n.log.start()
VM2668:7 1 : mock {number: "1", val: "val", log: Object, timer: 6480}
VM2668:7 2 : mock {number: "2", val: "val", log: Object, timer: 6481}
VM2668:7 1 : mock {number: "1", val: "val", log: Object, timer: 6480}
VM2668:7 2 : mock {number: "2", val: "val", log: Object, timer: 6481}
VM2668:7 1 : mock {number: "1", val: "val", log: Object, timer: 6480}
VM2668:7 2 : mock {number: "2", val: "val", log: Object, timer: 6481}
VM2668:7 1 : mock {number: "1", val: "val", log: Object, timer: 6480}
VM2668:7 2 : mock {number: "2", val: "val", log: Object, timer: 6481}
VM2668:7 1 : mock {number: "1", val: "val", log: Object, timer: 6480}
VM2668:7 2 : mock {number: "2", val: "val", log: Object, timer: 6481}
VM2668:7 1 : mock {number: "1", val: "val", log: Object, timer: 6480}
VM2668:7 2 : mock {number: "2", val: "val", log: Object, timer: 6481}
VM2668:7 1 : mock {number: "1", val: "val", log: Object, timer: 6480}
VM2668:7 2 : mock {number: "2", val: "val", log: Object, timer: 6481}
VM2668:7 1 : mock {number: "1", val: "val", log: Object, timer: 6480}
VM2668:7 2 : mock {number: "2", val: "val", log: Object, timer: 6481}
VM2668:7 1 : mock {number: "1", val: "val", log: Object, timer: 6480}
VM2668:7 2 : mock {number: "2", val: "val", log: Object, timer: 6481}
m.log.stop(); n.log.stop()