类似这样的函数
typeof(collection[i].x)=='string'?eval(collection[i].x):collection[i].x
因为eval这个函数感觉一直都是加不加没什么用。
我想知道eval(collection[i].x)和collection[i].x有什么区别
——————
再问下这个函数
this.items[this.items.length] = newItem;
是将一个数组赋给一个变量
例如this.items[3]这样的感觉不能成为一个数组
——————
代码如下
<script language="javascript">
function floaters()
{
this.items = [];
this.addItem = function(id,x,y,content)
{
document.write('<div id='+id+'style = "z-index:10;position:absolute;width:80px;height:30px;
   left:'+(typeof(x) == 'string'?eval(x):x+';
   top:'+(typeof(y) == 'string'?eval(y):y)+'">'+content+'<div>');
var newItem = {};
newItem.object = document.getElementById(id);
newItem.x = x;
newItem.y = y;
this.items[this.items.length] = newItem;
}
this.play = function()
{
collection = this.items;
setInterval('play()',10);
}
}function play()
{
if(screen.width <= 800)
{
for(var i = 0; i<collection.length;i++)
{
collection[i].object.style.display = 'none';
}
return;
}
for(var i=0;i<collection.length;i++)
{
var followObj = collection[i].object;
var followObj_x = (typeof(collection[i].x)=='string'?eval(collection[i].x):collection[i].x);
var followObj_y = (typeof(collection[i].y)=='string'?eval(collection[i].y):collection[i].y);
if(followObj.offsetLeft!=(document.body.scrollLeft+followObj_x))
{
var dx=(document.body.scrollLeft+followObj_x-followObj.offsetLeft)*delta;
dx=(dx>0?1:-1)*Math.ceil(Math.abs(dx));
followObj.style.left=followObj.offsetLeft+dx;
}
if(followObj.offsetTop!=(document.body.scrollTop+followObj_y))
{
var dy=(document.body.scrollTop+followObj_y-followObj.offsetTop)*delta;
dy=(dy>0?1:-1)*Math.ceil(Math.abs(dy));
followObj.style.top=followObj.offsetTop+dy;
}
followObj.style.display = '';
}
}
</script>

解决方案 »

  1.   

    eval干什么用的,查查语法手册不就知道了?
    加不加是否一样,你多做几个不同情况测试不就知道了?“再问下这个函数 this.items[this.items.length] = newItem;是将一个数组赋给一个变量
    例如this.items[3]这样的感觉不能成为一个数组”这叫函数吗?这是对一个已有的数组增加新的元素而已。看看书上关于数组的使用就知道了。
      

  2.   

    eval的作用是将字符串当做代码执行,作用那是非常非常强大啊
    js数组模型也是集合,可以以任意下标添加成员
    var items = [];
    items['a']='test';
    这种写法同样是合法的
      

  3.   

    eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
    提示和注释
    提示:虽然 eval() 的功能非常强大,但在实际使用中用到它的情况并不多。
    w3school上就有一个功能,就是相加,我不知道怎么多做几个不同情况。看了其他的文章
    也基本是相加什么的,所以这里直接一个eval(x)我就不懂了。
      

  4.   

    关于eval的实例,这个函数功能我真的很少见
    var code1='"a" + 2'; //表达式
    var code2='{a:2}'; //语句
    alert(eval(code1)); //a2
    alert(eval(code2)); //2 不知道为什么返回2
    alert(eval('(' + code2 + ')')); //[object Object] 返回这东西干什么用也不知道var s='global';//定义一个全局变量 
    function demo1()

    eval('var s="local"'); 

    demo1(); 
    alert(s); //globalvar s='function test(){return 1;}';//一个函数定义语句 
    function demo2()

    eval(s);
    }
    alert(demo2());
    解析字符串的作用,功能强大,在代码第一次见到使用
    因为功能强大,但是很少用,所以对他的理解确实不够
      

  5.   


    eval的作用是将字符串当做代码执行,这么有什么用,还不如直接写,何必用eval解析

    var items = [];
    items['a']='test';
    这个可以理解给items数组中添加一个变量吗?
      

  6.   


    有时传的参数要求是字符串
    function asd(f)
    {
    var a = 4, b = 2;
    alert(eval(f));
    }
    asd("(a+6)*b-3");//传的参数是字符串

    可以理解成给items数组中添加一个变量 
      

  7.   

    typeof ([]);
    给出的结果是 "object",那就是说Array是一种特别的object,有它自己的方法,但同时也可以象一般object一样操作如var items = ["aa","xx"];
    alert(typeof items); //object
    items['call']=function (){
       for(var i=0;i<this.length;i++ ){
          alert(this[i]);
       }
    };
    items.call();