如何传入Class实例的“this”上下文的变量代理?例如,this.saySomething()没有按照我的意愿行事。
您对OOJS代码组织有任何其他建议吗?
// Truveo Video Player Class
function Player(){
// Player Defaults
this.opts = {
volume: 0 // Initial volume settings
};
}
// Initialize player setup / methods
Player.prototype.init = function(configs){
// Overwrite defaults with custom configs
this.opts = $.extend(this.opts, configs);
$(document).ready(function(){
this.saySomething();
});
$(window).load(function(){
// do something else
});
}
Player.prototype.saySomething = function(){
alert(this.opts.volume);
}
// Create instance for channel surf
var configs = {volume:10};
var cSurf = new Player();
cSurf.init(configs);
答案 0 :(得分:3)
在输入功能之前保存this
的副本:
var me = this;
$(document).ready(function(){
me.saySomething();
});
答案 1 :(得分:1)
除了correct answer中的@Box9之外,还有一种可能性是为整个this
电话设置.ready()
的值。
您可以使用jQuery.proxy()
[docs]方法执行此操作。
$(document).ready( $.proxy(function(){
this.saySomething();
}, this) );
现在,在发送给.ready()
的函数中,它会将Player
对象作为this
的值。