默认属性返回undefined
问题描述:
我创建一个小的jQuery插件,默认属性返回undefined
我maked一个对象,具有默认属性和init方法我用$ .extend与自定义配置混入这一点。我想要一些可以替换为自定义方法的默认方法。事情是,如果我创建“defaultConfig”作为原型的属性方法返回undefined,但如果我创建此对象到一个方法,这将返回函数良好。为什么会发生?这样的方法不可能吗?
这是我的代码:
_defaultConfig:{
'preCarga':this._defaultPrecarga,
'onLoadArchivo':this._defaultOnload,
'postCarga':null,
'multiple':false,
'name': "_jcargaArchivo"
},
init:function(){
var defaultConfig ={
'preCarga':this._defaultPrecarga,
'onLoadArchivo':this._defaultOnload,
'postCarga':null,
'multiple':false,
'name': "_jcargaArchivo"
} ;
/**
This console print the methods good
*/
console.log("init",defaultConfig);
/**
this._defaultConfig print "undefined in "preCarga"
and "postCarga" properties.
*/
console.log(this._defaultConfig,this.configuracion);
this._configuracion = $.extend(this._defaultConfig,this.configuracion);
},
_defaultPrecarga:function(){/*code here*/},
_defaultPostCarga:function(){/*code here*/}
答
您不能引用的this
另一个属性的对象字面即是创造的所有属性。您需要在创建属性后执行此操作。
var default = {
_defaultConfig:{
'postCarga':null,
'multiple':false,
'name': "_jcargaArchivo"
},
init:function(){
var defaultConfig ={
'preCarga':this._defaultPrecarga,
'onLoadArchivo':this._defaultOnload,
'postCarga':null,
'multiple':false,
'name': "_jcargaArchivo"
} ;
/**
This console print the methods good
*/
console.log("init",defaultConfig);
/**
this._defaultConfig print "undefined in "preCarga"
and "postCarga" properties.
*/
console.log(this._defaultConfig,this.configuracion);
this._configuracion = $.extend(this._defaultConfig,this.configuracion);
},
_defaultPrecarga:function(){/*code here*/},
_defaultPostCarga:function(){/*code here*/}
};
default._defaultConfig.preCarga = this._defaultPrecarga;
default._defaultConfig.onLoadArchivo = this._dfaultOnLoad;
的另一种方式,这是经常做的是通过定义命名函数对象字面之外,再参照这些函数的名称,而不是使用this.functionName
。
好吧@barmar了解。 – jrodriguez
如果这解决了问题,您应该接受答案。 – Barmar