如何在JavaScript中实现Ruby的扩展模块

时间:2017-05-25 17:59:33

标签: javascript ruby-on-rails ruby node.js

在Ruby中,我可以在运行时扩展对象上的模块。我认为JavaScript可以获得该功能,但我无法让它工作。

Ruby运行正常,该对象具有test2class Test def test1 puts "test1" end end module Other def test2 puts "test2" end end test = Test.new test.extend(Other) test.test1 test.test2 方法:

class Test {
  test1(){
    console.log("test1")
  }
}

class Other {
  test2() {
    console.log("test2")
  }
}


console.log(Object.getOwnPropertyNames( Test.prototype ))
console.log(Object.getOwnPropertyNames( Other.prototype ))

var test = new Test
var test_new = Object.assign(test, Other.prototype)
test_new.test1()
test_new.test2()

JavaScript返回TypeError:test_new.test2不是函数

System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.RealTime

有谁知道我怎么能得到它?

1 个答案:

答案 0 :(得分:2)

这似乎对我有用:

> class Test { test1(){ console.log("test1") }}    
> class Other { test2() { console.log("test2") }}
> test = new Test
Test {}
> other = new Other
Other {}
> test.test1()
test1
> test["test2"] = other.test2
> test.test2()
test2

实例实际上只是一个函数数组(在本例中)。所以,当你致电:

other.test2

它返回test2的{​​{1}}元素,即other函数。这个:

test2

只需将该函数添加到> test["test2"] = other.test2 的函数数组中。然后你可以打电话给:

test