在Javascript中模仿Java风格继承
我试图模仿Java风格的类继承,我想我已经做到了。然而,我有一个问题,当我创建同一个Javascript类的多个实例时,所有实例都是相同的 情况是这样的 我有一个名为在Javascript中模仿Java风格继承,javascript,inheritance,Javascript,Inheritance,我试图模仿Java风格的类继承,我想我已经做到了。然而,我有一个问题,当我创建同一个Javascript类的多个实例时,所有实例都是相同的 情况是这样的 我有一个名为Screen的Javascript类: function Screen(screenName) { this.current = new DataResultSet(); // this is a java class this.current.setScreenName(screenName); } Scree
Screen
的Javascript类:
function Screen(screenName) {
this.current = new DataResultSet(); // this is a java class
this.current.setScreenName(screenName);
}
Screen.prototype.GetScreenName= function() {
return this.current.getScreenName();
}
Screen.prototype.GetFieldValue= function(name) {
return this.current.getValue(name);
}
// some other functions that can be called that utilize the current object.
这是继承的类:
function screenSub1() {}
screenSub1.prototype=new Screen("screenSub1");
screenSub1.prototype.GetID = function() { return GetFieldValue("ID"); }
// some other functions that can be called, specific to this class
现在,在我的代码中,如果我这样做
var obj = new screenSub1();
var obj2 = new screenSub1();
两个对象的基础“当前”对象是相同的!有没有办法绕过这个问题?谢谢
Julia据我所知,您不能(至少不容易,也许您可以找到一些模仿java继承的javascript库)。Java和Javascript在继承方面非常不同。如果你想了解更多关于这个主题的信息,可以在这里查看:我注意到的一点:
Screen.prototype.GetScreenName(){
应该是Screen.prototype.GetScreenName=function(){
,如果我没弄错的话(对于screenSub1.prototype.GetID
),还有Javascript约定(据我所知)是让函数以小写字母开头,然后用驼峰大小写其余部分,因此类似于getScreenName
而不是getScreenName
。它需要是function screenSub1(){Screen.call(这是“screenSub1”);}screenSub1.prototype=Object.create(Screen.prototype)
Bergi,非常感谢您的回复!很抱歉我在帖子中犯了这么多错误。我模拟了代码,没有检查。我搜索了,但没有找到任何答案。但是您的语法是正确的,我可以正常工作了!谢谢!!!!