所有原型的功能 - Javascript

时间:2014-03-24 08:14:33

标签: javascript oop prototype video.js

我正在使用video.js制作视频播放器。 在这一方面,我有原型的元素(音量,全屏,播放,暂停......)。另一方面,我有我的函数 parse(),它将被所有画布原型使用(它们来自不同的元素)。

解析功能:

vjs.parseHex = function(c) {
    if(c.charAt(0) == "#") {
        return c.substring(1,7);
    } else if(c.substr(0,2) == "0x") {
        return c.substring(2,8);
    } else {
        return c;
    }
},

vjs.parseRed = function(c) {
    return parseInt((this.parseHex(c)).substring(0,2),16);
},

vjs.parseGreen = function(c) {
    return parseInt((this.parseHex(c)).substring(2,4),16);
},

vjs.parseBlue = function(c) {
    return parseInt((this.parseHex(c)).substring(4,6),16);
}

我的画布原型的例子:

js.VolumeBar.prototype.drawSound = function(){
  .
  .
  .
}

我希望所有不同的原型都可以访问我的解析函数。那可能吗 ?如果是,我该怎么做?

谢谢你的帮助, LEA。

1 个答案:

答案 0 :(得分:1)

似乎vjs是一种Util命名空间,它包含一些应该在不同位置使用的函数。只要它是公开的,它就可以在任何地方使用:

vjs = {};
vjs.parseHex = function(c) { /*...*/ }
vjs.parseRed = function(c) { /*...*/ }


js.VolumeBar.prototype.drawSound = function(){
  vjs.parseRed(stuff);
}

请注意,如果您将vjs.parseRed作为回调传递,则会使用与this不同的对象调用它,而不是您期望的对象。您可以将其重写为

  • this替换为vjs

    vjs.parseRed = function(c) { return parseInt((vjs.parseHex(c)).substring(0,2),16); }

  • 将函数作为参数传递时绑定函数:

    doAsync(vjs.parseRed.bind(vjs));

  • 或者在定义它们时绑定它们:

    vjs.parseRed = function(c) { /*...*/ }.bind(vjs);

相关问题