是否可以將Java對象作爲JavaScript對象的原型?如下所示:Java對象可以成爲Nashorn中JavaScript對象的原型嗎?
var Person = Java.type("Person");
var hans = new Person();
hans.name = "Hans";
var employeeFactory = function() {
var F = function(){};
F.prototype = hans;
return new F();
};
var fritz = employeeFactory();
print(fritz.name);
這裏Person是一個Java Bean。變量hans被設置爲這個Java類的實例。行hans.name =「Hans」按預期設置Java對象中的名稱字段。但是當工廠函數中創建對象fritz時,它不會鏈接到預期的原型。 Java實例沒有被接受爲原型嗎?
我真的很驚訝,不起作用。 –
只與切線相關,但Nashorn不支持'Object.create'嗎? –
有趣的一點。 Nashorn不僅知道Object.create函數。如果我使用它而不是工廠,並嘗試創建一個JS對象,並將Java實例作爲原型,則會出現以下錯誤:TypeError:Person @ 73d4cc9e不是Object。這是一個真正的可憐。本來很好從Java bean繼承。 – Gregor