我一直致力于一个宠物项目,我一直在创建一个只有函数的JS框架......并且不确定是否有任何方法可以简化以下...在这种情况下动态变量赋值。 ..
String.prototype.is = function(x) {window[this]=window[this]||x;}
"a".is(42);
alert(a); // window.alert shows 42
有没有更简单的方法来执行此功能?这仅仅是为了实现仅功能框架...所以使用“a = 42;”不允许...我希望这不仅可用于数字,还可用于字符串,数组,布尔值,日期等。
答案 0 :(得分:2)
您的想法存在问题,更改原生类型的原型并不是一个好习惯。与第三方代码一起使用时,这可能导致意外(有时几乎无法调试)行为。
您的主要想法没有问题,但我建议您在完全控制下将您想要操作的对象包装起来,然后使用包装器提供的其他行为来装饰这些对象。这是jQuery方法,更安全。
答案 1 :(得分:0)
您可以使用新的ES 5 getter和setter。 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/get