在Ruby中,我可以在运行时扩展对象上的模块。我认为JavaScript可以获得该功能,但我无法让它工作。
Ruby运行正常,该对象具有test2
和class 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
有谁知道我怎么能得到它?
答案 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