程序:
function makeArray(n){
this.length = n;
return this;
}
function hexfromdec(num){
hex = new makeArray(1);
var hexstring = "";
var shifthex = 16;
var temp1 = num;
for(x=1;x>=0;x--){
hex[x] = Math.round(temp1/shifthex - .5);
hex[x-1] = temp1 - hex[x]*shifthex;
temp1 = hex[x-1];
shifthex /= 16;
}
for(x=1; x>=0; x--) { hexstring += getletter(hex[x]); }
return (hexstring);
}
function getletter(num){
if(num < 10){ return num; }
else{
if(num == 10) { return "A"; }
if(num == 11) { return "B"; }
...
}
}
我的理解是定义了一个自定义对象makeArray,并用参数n附给其属性length。然后在函数hexfromdec(num)中用参数1创建该对象。
如果我的上述理解正确的话,那么下面的hex[x]应该是hex对象的属性(x为属性序号)。可是这样的话我有如下问题:
1. 自定义对象makeArray的属性length起什么作用?
2. 属性hex[x]没有定义?
3. 当for循环中的x=0时,hex[x-1]不就成了hex[-1],这显然不对。
还有Math.round()方法起什么作用?
function makeArray(n){
this.length = n;
return this;
}
function hexfromdec(num){
hex = new makeArray(1);
var hexstring = "";
var shifthex = 16;
var temp1 = num;
for(x=1;x>=0;x--){
hex[x] = Math.round(temp1/shifthex - .5);
hex[x-1] = temp1 - hex[x]*shifthex;
temp1 = hex[x-1];
shifthex /= 16;
}
for(x=1; x>=0; x--) { hexstring += getletter(hex[x]); }
return (hexstring);
}
function getletter(num){
if(num < 10){ return num; }
else{
if(num == 10) { return "A"; }
if(num == 11) { return "B"; }
...
}
}
我的理解是定义了一个自定义对象makeArray,并用参数n附给其属性length。然后在函数hexfromdec(num)中用参数1创建该对象。
如果我的上述理解正确的话,那么下面的hex[x]应该是hex对象的属性(x为属性序号)。可是这样的话我有如下问题:
1. 自定义对象makeArray的属性length起什么作用?
2. 属性hex[x]没有定义?
3. 当for循环中的x=0时,hex[x-1]不就成了hex[-1],这显然不对。
还有Math.round()方法起什么作用?
alert(i.toString(16));
2. 属性hex[x]没有定义?
3. 当for循环中的x=0时,hex[x-1]不就成了hex[-1],这显然不对。
还有Math.round()方法起什么作用?第一,如果这是书上的源代码,这书可以选择不读了
第二,属性没有定义这个问题我可以给你解释下:其实你这个就是在定义属性
hex[x]本身是没有的对吧
hex[x] = 1;的时候那么就是hex有了一个属性x。同时值为1
第三,初学的话,选择一本靠谱的书很重要Math.round()的功能:http://www.w3school.com.cn/js/jsref_round.asp