我正在使用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。
答案 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);