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内对象是什么意思呢?
(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 == true; //true
0 == true; //false
0 == false; //false而"==="比较的时候不会进行类型转换,直接比较值,其用意是少了转换的动作,效率高,如
1 === true; // false
0 === false; //false
不要学
this.c.obj = this;
这种写法会导致循环引用,会造成内存泄露
抱歉写错了
"=="比较
1 == true; //true
0 == true; //false
0 == false; //true
那些图片切换时的动画效果是不是都用滤镜做成来的,
然后在js里 filter[0].apply来调用,
不过我再网上搜这个filter[0].apply没有相关的文档解释啊。
还见到过这种filter[0].play,1楼高人能给解释下吗。还有滤镜的话需不需要深入学啊,我因为是在自学css和js,一般的css文档里都很少会提到滤镜方面的东西,好像是因为只有ie支持。
因为this.c = document.createElement("img");
他只是想把this绑定到this.c.obj上面方便以后调用而已。。
但这种写法是不好的。循环引用。直接导致泄露
他这么写以后这么写就直接可以调到父对象了。this.c.onclick = function ()
{
alert(this.obj.xxx)
}
其实可以用闭包实现的吧。
(function(obj)
{
obj.c.onclick = function()
{
alert(obj.xxx)
}
}
)(obj)
当类的话,意思是我给自身增加一个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的操作,事件结束后该属性不被废除,一直占用内存,造成内存泄露