How can I use the static getter, z(), and call an object to use the this keyword?
I suppose the method static y() does do what I am looking for. But I'm like to figure out if I can make this work with an actual getter.
This is my code:
class test { constructor(x, y, z) { this._x = x; this._y = y; this._z = z; } static get str() { return 'Some predefined value'; } // I can use this static getter. get x() { return this._x; } // I can use this non-static getter on a class instance and use the this keyword (obviously). static y() { return this._y; } // I can use this static method on a class instance using the this keyword. static get z() { return this._z; } // How can I use this on class instances?. } const obj = new test(2, 3, 4); console.log(test.str); // Use static getter from class. console.log(Object.getPrototypeOf(obj).constructor.str); // Use static getter from object instance. console.log(obj.x); // Use non-static getter and use the this keyword. console.log(test.y.call(obj)); // Use static method and use the this keyword.
To invoke a getter indirectly, you can use Reflect.get
( MDN ) with the third argument set to "this" object. The third argument to Reflect.get
is
the value of this provided for the call to target if a getter is encountered.
Example:
class test { constructor(x, y, z) { this._z = z; } static get z() { return this._z; } } const obj = new test(2, 3, 4); result = Reflect.get(test, 'z', obj) console.log(result)
(As a side note, I hope your question is pure curiosity and you're not going to use this in production code).
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.