Message from JavaScript discussions

December 2017

— But because they're in the sysCallProcedures object, this is undefined unless I use apply or call

— 

var test = function () {
this.thing = "Hello world";
};
test.prototype.stuff = {
testFunc: function () {
console.log(this.thing);
}
};
var testInstance = new test();
testInstance.stuff.testFunc();
VM505:6 undefined

— Example code

— 

testInstance.stuff.testFunc.call(testInstance);
VM505:6 Hello world

— This is what I am doing in prod code right now, that I dislike a lot ^

— Https://stackoverflow.com/questions/28801859/using-this-within-nested-prototype-sub-objects
this says bind, ugh

Message permanent page

— Meh, maybe I can make a new sysCallProcedures class that accepts a thisArg as an argument to the constructor

Message permanent page

— Then at least I don't have to create a ton of new functions, and also I don't have to use apply or call in my logic (just inside the class)

Message permanent page

— Correct

— 

Kernel.prototype.sysCallInterface.someCall

gets routed to
Kernel.prototype.sysCall(call)

which calls
Kernel.prototype.sysCallProcedures.someCall

Message permanent page

— 

Kernel.sysCallInterface.someCall("data");

returns
["someCall", ["data"]]

so
Kernel.sysCall(["someCall", ["data"]]);

calls
Kernel.sysCallProcedures.someCall

Message permanent page

— But I don't want to create new functions on each kernel instance