在原型中的$ .ready中使用“this”

时间:2011-03-03 01:56:32

标签: javascript jquery oop this

如何传入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);

2 个答案:

答案 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的值。