通过JavaScript函数分配动态变量

通过JavaScript函数分配动态变量,javascript,Javascript,我一直在做一个pet项目,我一直在创建一个只支持函数的JS框架。。。我不确定是否有任何方法可以简化以下内容。。。在这种情况下,动态变量赋值 String.prototype.is = function(x) {window[this]=window[this]||x;} "a".is(42); alert(a); // window.alert shows 42 有没有更简单的方法来处理函数?这只是为了实现一个功能单一的框架。。。因此,不允许使用“a=42;”。。。我希望它不仅可以用于数字,还

我一直在做一个pet项目,我一直在创建一个只支持函数的JS框架。。。我不确定是否有任何方法可以简化以下内容。。。在这种情况下,动态变量赋值

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

有没有更简单的方法来处理函数?这只是为了实现一个功能单一的框架。。。因此,不允许使用“a=42;”。。。我希望它不仅可以用于数字,还可以用于字符串、数组、布尔值、日期等。

您可以使用新的ES 5 getter和setter。
您的想法中有一个问题,更改本地类型的原型不是一个好的做法。当与第三方代码一起使用时,这可能会导致意外(有时几乎无法调试)行为


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

这种建设的目的是什么
is
实际上用作“未定义或为空时赋值”,但始终使用全局变量。这种构造非常奇怪,你能解释一下用例吗?塔德克,正如我提到的,我正在创建一个完全基于函数的javaScript框架。所以我可以写一些类似于“a”的东西,is(9);"b.is(10);;"c.is(14);;警报(平均(a、b、c));我知道有更简单的方法。。。但我的重点是创建一个只有函数的框架。。。这说明了问题吗?事实上,它提供了一些关于是什么驱使你做这样的事情的见解,但看起来你在做错误的设计决策。首先,您正在更改全局变量,其次您正在更改公共类型,第三,语法看起来很奇怪。这里的问题可能是,您试图编写类似于您自己的语言(而不是真正的框架)的东西,或者您只是忽略了JavaScript的特性。请参阅,以获得对此的深入了解。即使你决定继续写一个框架,使用他的建议。SBR,看起来很有希望。。。我可以看一个使用我的函数作为基础的get/set示例吗?Al,我将如何包装它?我知道jQuery,作为这类事情的国王之一。。。但我不想为了理解它而去解剖它。。。是否有任何链接可以显示一种更简单的方法来实现这一点?简单地说:yourWrapper(“a”).is(42);您可以像jQuery一样创建一个较短的访问点,jQuery的访问点是$(一个“jQuery”的分类)。另一个要点是:避免使用window[something]=“something value”这样的操作污染您的全局名称空间;这是另一种不好的做法=这里有一个关于Javascript反模式的幻灯片链接,我知道你可能不会说葡萄牙语来理解,但我相信你会理解的代码=D:看看这个关于如何创建包装器的示例: