1

我一直在做一个宠物项目,在那里我一直在创建一个只有函数的 JS 框架......并且不确定是否有任何方法可以简化以下内容......在这种情况下是动态变量分配......

String.prototype.is = function(x) {window[this]=window[this]||x;}
"a".is(42);
alert(a); // window.alert shows 42

有没有更简单的方法可以用函数做到这一点?这样做的唯一目的是实现仅功能框架……所以使用“a = 42;” 不允许...我希望它不仅可用于数字,还可以用于字符串、数组、布尔值、日期等。

4

2 回答 2

2

你的想法有问题,改变原生类型的原型不是一个好习惯。与第三方代码一起使用时,这可能会导致意外(有时几乎无法调试)行为。

您的主要想法没有问题,但我建议您将要操作的对象包装在您完全控制下的另一个对象中,并使用包装器提供的附加行为来装饰这些对象。这是jQuery方法,更安全。

于 2012-10-12T01:10:22.783 回答
0

您可以使用新的 ES 5 getter 和 setter。 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/get

于 2012-10-12T01:08:13.503 回答