程序:
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()方法起什么作用?

解决方案 »

  1.   

    var i = 15;
    alert(i.toString(16));
      

  2.   

    1. 自定义对象makeArray的属性length起什么作用?
    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