如何在Javascript中动态创建对象及其方法?

Hen*_*zia 11 ruby methods object

我最近发现在Ruby中动态创建对象和方法是一项非常重要的工作,这可能是因为我在Javascript中的背景经验.

在Javascript中,您可以动态创建对象,其方法如下:

function somewhere_inside_my_code() {
  foo = {};
  foo.bar = function() { /** do something **/ };
};
Run Code Online (Sandbox Code Playgroud)

如何在Ruby中完成上述语句(如在Javascript中一样简单)?

Pat*_*ity 12

您可以使用单例方法实现此目的.请注意,您可以对所有对象执行此操作,例如:

str = "I like cookies!"

def str.piratize
  self + " Arrrr!"
end

puts str.piratize
Run Code Online (Sandbox Code Playgroud)

这将输出:

I like cookies! Arrrr!
Run Code Online (Sandbox Code Playgroud)

这些方法实际上只在这个单个对象上定义(因此名称),所以这段代码(在上面的代码之后执行):

str2 = "Cookies are great!"
puts str2.piratize
Run Code Online (Sandbox Code Playgroud)

只是抛出异常:

undefined method `piratize' for "Cookies are great!":String (NoMethodError)
Run Code Online (Sandbox Code Playgroud)


dav*_*rac 5

你可以这样做:

foo = Object.new

def foo.bar
  1+1
end
Run Code Online (Sandbox Code Playgroud)