我希望能够做到像下面为数字添加道具ES2015严格模式
console.log(a, typeof a); // prints "3 'number'"
console.log(typeof a.mymethod()); // prints 'foobar'
在非严格模式,这是可能的(至少在节点),但在严格的模式ECMAScript 2015禁止在原始值上设置属性(source)。
有什么办法我可以伪造这个,说使用Proxy
或属性描述符,或类似的东西?
我希望能够做到像下面为数字添加道具ES2015严格模式
console.log(a, typeof a); // prints "3 'number'"
console.log(typeof a.mymethod()); // prints 'foobar'
在非严格模式,这是可能的(至少在节点),但在严格的模式ECMAScript 2015禁止在原始值上设置属性(source)。
有什么办法我可以伪造这个,说使用Proxy
或属性描述符,或类似的东西?
不能代理原始无论是。任何'Object'静态方法也不会起作用。怀疑这在严格模式下是不可能的。最接近你可能会得到的是[Symbol.toPrimitive](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive)着名的Symbol。你可以做到这一点,强制一个对象的数字将是一个特定的数字,例如'+ {} === 3'。 –