Зависит от того, что вы хотите унаследовать.Я обнаружил, что если я использую прототип JavaScript для «определений» объектов, я получаю только статические методы объектов Java:
function test() {
this.hello = function() {
for(var i in this) {
println(i);
}
};
}
test.prototype= com.acme.app.TestClass; // use your class with static methods
// see the inheritance in action:
var testInstance=new test();
test.hello();
Однако JavaScript позволяет вам также выполнять назначения прототипов для экземпляров объектов, так что выможет использовать функцию, подобную этой, и получить более похожее на Java поведение наследования:
function test(baseInstance) {
var obj = new function() {
this.hello=function() {
for(var i in this) {
println(i);
}
};
};
obj.prototype=baseInstance; // inherit from baseInstance.
}
// see the thing in action:
var testInstance=test(new com.acme.TestClass()); // provide your base type
testInstance.hello();
Или использовать функцию (например, init
), аналогичную приведенной выше функции в самом объекте:
function test() {
this.init=function(baseInstance) {
this.prototype=baseInstance;
};
this.hello=function() {
for(var i in this) {
println(i);
}
};
}
var testInstance=new test();
println(typeof(testInstance.prototype)); // is null or undefined
testInstance.init(new com.acme.TestClass()); // inherit from base object
// see it in action:
println(typeof(testInstance.prototype)); // is now com.acme.TestClass
testInstance.hello();