现在我正在尝试构建一个JavaScript库,虽然它非常少年,但我确信它可以重做,以便更好地执行。但是,我目前正在存储我常用的一些常用函数(在渲染HTML5 Canvas动画时),并且我将前面提到的JavaScript函数存储在他们自己的名为canvasLab.js的平面文件中。我目前的结构是:
var canvasLab = {
setCanvas: function(elem) {
if (elem == undefined) {
return Modernizr.canvas;
}
return document.getElementById(elem);
},
set2D: function(elem) {
return elem.getContext('2d');
},
...一切正常,直到我尝试在另一个函数中声明一个函数:
getColorGradient: function(freqR,freqG,freqB,phaseA,phaseB,phaseC,center,width,length) {
if (center == undefined) center = 128;
if (width == undefined) width = 127;
if (length == undefined) length = 50;
colorArray=[];
frequency = 0.3;
amplitude = 127;
center = 128;
byte2Hex: function(n) {
nybHexString = '0123456789ABCDEF';
return String( nybHexString.substr( ( n >> 4 ) & 0x0F, 1 ) ) + nybHexString.substr(n & 0x0F, 1);
},
getRgb: function(r,g,b) {
return '#' + byte2Hex(r) + byte2Hex(g) + byte2Hex(b);
},
getGradientArray: function() {
for (var i=0; i<length; ++i) {
red = Math.sin(freqR * i + phaseA) * width + center;
green = Math.sin(freqG * i + phaseB) * width + center;
blue = Math.sin(freqB * i + phaseC) * width + center;
result = getRgb(red,green,blue);
this.colorArray[i] = result;
}
}
}
当我收到“意外令牌”时(第45行出现错误:
) byte2Hex: function(n) {
我是制作JavaScript库(或Lib对象)的新手,我仍然不确定在开发库时使用的最佳方法和语法。我最担心的是它在内部,客户端的机器和浏览器中都很轻。在任何一种情况下,我都不明白为什么我不能创建一个新方法(即:byte2Hex())并通过父对象实例化它。任何批评肯定会受到赞赏。
答案 0 :(得分:1)
您正在定义您的函数,就好像它在一个对象的范围内
byte2Hex: function(n)
这一行应该说
byte2Hex = function(n)....
以下这两个功能也存在同样的问题
如果你想将它们作为方法返回,那么它们应该包裹在一个对象中。
return {
getRgb: function(r,g,b) {
return '#' + byte2Hex(r) + byte2Hex(g) + byte2Hex(b);
},
getGradientArray: function() {//...
}
};
您还有大量使用var语句限定的引用。
为了帮助您找到,请尝试将代码粘贴到以下类型的错误中: