I think as usual @allObjects has done an awesome job of answering the question about bind.
But looking at the code above, there are a few big issues that I thought it might help if I point out in-line:
class TestBind {
constructor() {
var vX = 23; // This creates a LOCAL VARIABLE - you need this.vX=23;
}
getX() {
return this.vX;
}
setX( obj ) {
this.vX = obj;
}
}
exports = TestBind; // not really useful in this case as you're using using 'TestBind' directly
var tb = new TestBind();
var g = tb.getX; // This makes 'g' equal to the function 'getX' itself
// Check out https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get for a real example of getters
print g // this is not how you call a function in JS. It won't print anything at all. You need print(g)
var tb = new TestBind();
tb.setX = 42; // This just overwrites the 'setX' function with the number 42
// Check out https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set for a real example of setters
var g = tb.getX(); // this works, there is no 'Function "getX" not found!' error so I can only assume you're not uploading the code that you posted
I'm not sure any of these problems you're having would be fixed by how you use bind though.
I think what you intended to do was probably:
class TestBind {
constructor() {
this.vX = 23;
}
getX() {
return this.vX;
}
setX( obj ) {
this.vX = obj;
}
}
var tb = new TestBind();
print(tb.getX()); // prints 23
var g = tb.getX();
print(g); // prints 23
tb.setX(42);
print(tb.getX()); // prints 42
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
I think as usual @allObjects has done an awesome job of answering the question about
bind
.But looking at the code above, there are a few big issues that I thought it might help if I point out in-line:
I'm not sure any of these problems you're having would be fixed by how you use
bind
though.I think what you intended to do was probably: