I want to add a count property to string in JavaScript which calls the length property internally. I don't want to add it as a function. How to do this?
"abc".count; // 3
I want to add a count property to string in JavaScript which calls the length property internally. I don't want to add it as a function. How to do this?
"abc".count; // 3
You can try to do this:
Object.defineProperty(String.prototype, 'count', {
get: function() { return this.length; }
});
console.log(
"abc".count // 3
)
But I recommend you to avoid extending existing objects in JS. You can read more about it here
Although I'm a fan of ES5, one good thing ES6 has brought are finally the proxies. You don't have to use them, but they will grant you a lot of flexibility and consistency:
function convertToProxy(x){
x = Object(x);
let proxy = new Proxy(x,{
get: function(x,key,proxy){
switch (key) {
case "count":
return 3;
default:
return function(){
return "hmmmm"
};
}
},
getPrototypeOf: function(x){
return String.prototype;
}
});
return proxy;
}
let y = convertToProxy("abc");
y + "a" // "hmmmma"
y - 3 // NaN
y.count - 3 //0