Javascript 通过include()更改传单类的行为
您可以通过以下方式更改传单.js类的行为 教程说: 如果已定义类,则可以重新定义现有属性/方法,或者使用.include()添加新属性/方法: 然而,当尝试这样做时,我得到一个Javascript 通过include()更改传单类的行为,javascript,leaflet,Javascript,Leaflet,您可以通过以下方式更改传单.js类的行为 教程说: 如果已定义类,则可以重新定义现有属性/方法,或者使用.include()添加新属性/方法: 然而,当尝试这样做时,我得到一个超过最大调用堆栈大小的错误 var DemoClass=L.Class.extend({ 价值:42, demoMethod:function(){ 返回此.value; } }); 包括({ demoMethod:function(){ 返回DemoClass.prototype.demoMethod.call(thi
超过最大调用堆栈大小的错误
var DemoClass=L.Class.extend({
价值:42,
demoMethod:function(){
返回此.value;
}
});
包括({
demoMethod:function(){
返回DemoClass.prototype.demoMethod.call(this)*2;
},
第二种方法:函数(){
返回此.value;
}
});
var instance=new DemoClass();
console.log(“value=“+instance.value”);
log(“secondMethod()=”+instance.secondMethod());
console.log(“demoMethod()=”+instance.demoMethod());//给出超出调用堆栈的值
尝试隔离基本功能:
var DemoClass=L.Class.extend({
价值:42,
demoMethod:function(){
返回此.value;
}
});
包括({
baseDemoMethod:DemoClass.prototype.demoMethod,
demoMethod:function(){
返回此.baseDemoMethod()*2;
},
第二种方法:函数(){
返回此.value;
}
});
var instance=new DemoClass();
console.log(“value=“+instance.value”);
log(“secondMethod()=”+instance.secondMethod());
log(“demoMethod()=”+instance.demoMethod())代码>
尝试隔离基本功能:
var DemoClass=L.Class.extend({
价值:42,
demoMethod:function(){
返回此.value;
}
});
包括({
baseDemoMethod:DemoClass.prototype.demoMethod,
demoMethod:function(){
返回此.baseDemoMethod()*2;
},
第二种方法:函数(){
返回此.value;
}
});
var instance=new DemoClass();
console.log(“value=“+instance.value”);
log(“secondMethod()=”+instance.secondMethod());
log(“demoMethod()=”+instance.demoMethod())代码>
您正在进行无限递归调用,就在那里
JS有时很奇怪,这次就是其中之一。通过引用DemoClass.prototype
,您指的是DemoClass.prototype
的最新状态。。。所以DemoClass.prototype.demoMethod
指的是它自己
无论何时覆盖原型方法或属性,前一个方法或属性都会被覆盖
如果要引用该方法以前的定义,必须保留对该方法以前定义的引用
这通常需要某种形式的技巧(在某些受控变量范围内保留对原始值的引用)。有多种方法可以做到这一点:像@Jaws一样,将对先前原型的引用作为类属性保存;在某处做个了结;在中执行类似操作,或者执行任何允许保留对原始方法定义的引用的操作
您正在进行无限递归调用,就在那里
JS有时很奇怪,这次就是其中之一。通过引用DemoClass.prototype
,您指的是DemoClass.prototype
的最新状态。。。所以DemoClass.prototype.demoMethod
指的是它自己
无论何时覆盖原型方法或属性,前一个方法或属性都会被覆盖
如果要引用该方法以前的定义,必须保留对该方法以前定义的引用
这通常需要某种形式的技巧(在某些受控变量范围内保留对原始值的引用)。有多种方法可以做到这一点:像@Jaws一样,将对先前原型的引用作为类属性保存;在某处做个了结;在中执行类似操作,或者执行任何允许保留对原始方法定义的引用的操作
demoMethod: function() {
return DemoClass.prototype.demoMethod.call(this) * 2;
},