欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ruby中和javascript中,动态方法的创建

程序员文章站 2022-07-14 15:49:33
...
class Klass
  def hello(*args)
    "Hello " + args.join(' ')
  end
end
k = Klass.new
k.send :hello, "gentle", "readers"   #=> "Hello gentle readers"
#总之就是send后面加参数



var   str   =   "a,b,c,d ";
var   arr=str.split( ", ");
for(i=0;i <=arr.length;i++)

{
     eval( "var   "+arr[i]+ "= "+i+ "; ");
}
alert(a+ "   "+b+ "   "+c+ "   "+d);




eval虽然是一个很消耗资源的操作,但很多时候我们还非要靠它不可。

比如使用eval动态创建变量,如var a="str",我们可能希望将a的值str创建成为一个变量并赋值为test,这时大概只能靠eval了。

第一次偶遇到这个问题,想都没想直接来了下面一句代码:eval(a)="test",结果一执行就给出了一个错误:“不能给函数返回值赋值”,顿时恍然大悟,eval怎么说也是个函数啊,我们大概都没有写过如myfunc(a)=""的语句。因为函数本身返回的也是一个值,将一个值赋给一个值当然不会正确了。

因为eval的强大和其特殊差点使我忘记了它还是个函数。

正确的写法应该这样:eval(a+"='test'");
相关标签: send