Nw=19
(i===0 || i===Nw-1)?"head":(i===Math.floor(Nw/2))?"mid":"tail"
上面这个表达式中 ===是什么意思??还有
CWorm = function(img,z) {
this.c = document.createElement("img");
document.body.appendChild(this.c);
this.c.obj = this;
}
这种this.c.obj = this把this在赋值给this内对象是什么意思呢?

解决方案 »

  1.   

    在JS里面
    用"=="比较的时候,引擎会将比较对象进行类型转换,如
    1 == true; //true
    0 == true; //false
    0 == false; //false而"==="比较的时候不会进行类型转换,直接比较值,其用意是少了转换的动作,效率高,如
    1 === true; // false
    0 === false; //false
    不要学
    this.c.obj = this;
    这种写法会导致循环引用,会造成内存泄露
      

  2.   


    抱歉写错了
    "=="比较
    1 == true; //true
    0 == true; //false
    0 == false; //true
      

  3.   

    还有一个问题补充一下,最近在看网上的一些js特效源码,
    那些图片切换时的动画效果是不是都用滤镜做成来的,
    然后在js里 filter[0].apply来调用,
    不过我再网上搜这个filter[0].apply没有相关的文档解释啊。
    还见到过这种filter[0].play,1楼高人能给解释下吗。还有滤镜的话需不需要深入学啊,我因为是在自学css和js,一般的css文档里都很少会提到滤镜方面的东西,好像是因为只有ie支持。
      

  4.   

    this.c.obj = this;这样写有什么意义?
      

  5.   


    因为this.c = document.createElement("img");
    他只是想把this绑定到this.c.obj上面方便以后调用而已。。
    但这种写法是不好的。循环引用。直接导致泄露
      

  6.   

    我知道了。
    他这么写以后这么写就直接可以调到父对象了。this.c.onclick = function ()
    {
      alert(this.obj.xxx)
    }
    其实可以用闭包实现的吧。
    (function(obj)
    {
       obj.c.onclick = function()
       {
          alert(obj.xxx)
       }
    }
    )(obj)
      

  7.   

    好奇怪的东西,CWorm 这个是当类呢还是当全局函数或者局部函数呢?还有参数img和z是干嘛用的?
    当类的话,意思是我给自身增加一个c属性,赋值为创建的一个img DOM对象,下面是一个函数操作,将该对象添加到body中去,然后c属性的obj属性指向本身,那么在new CWorm实例化对象时,比如var a = new CWorm();  a === a.c.obj//true  a.c.obj.c.obj === a.c.obj//true这个就是1楼大神说的循环引用。
    而且这个类不伦不类
    那么在说说当全局函数或者局部函数的情况
    全局范围内被调用,this指向window对象,这个更扯,我给window对象设置个c属性,然后创建完img对象后再把c属性的obj属性指向window对象,难道是为了在父子页面调用该方法时可以通过获取c属性的obj属性来确保window是当前窗口?不怎么理解
    局部作用域调用,比如document.getElementById(...).onclick = CWorm;
    this指向当前DOM元素,给元素设置c属性,c的obj属性指向当前DOM,每当触发一次click事件,就做一次将c属性的obj属性指向当前DOM的操作,事件结束后该属性不被废除,一直占用内存,造成内存泄露