javascript - for 循环与这个自定义方法 forEach 的效果为什么不一样
大家讲道理
大家讲道理 2017-04-11 12:20:08
0
2
548

网上的一个 3D 标签云的插件,其中用到了数组循环方法 forEach ,不过我把循环改成 for 循环之后,效果就会出错。
这是原本的 forEach 的代码:

Array.prototype.forEach = function(callback){
    for(var i=0;i<this.length;i++){
        callback.call(this[i]);
    }
}
function rotateY(){
    var cos = Math.cos(angleY);
    var sin = Math.sin(angleY);
    tags.forEach(function(){
        var x1 = this.x * cos - this.z * sin;
        var z1 = this.z * cos + this.x * sin;
        this.x = x1;
        this.z = z1;
    })
}

我改成了 for 循环后就完全不对。

function rotateY(){
    var cos = Math.cos(angleY);
    var sin = Math.sin(angleY);
    for( var i=0 ,length=tags.length;i<length;i++){
        var x1 = tags[i].x * cos - tags[i].z * sin;
        var z1 = tags[i].z * cos + tags[i].x * sin;
        tags[i].x = x1;
        tags[i].z = z1;
    }
}

这是这个 demo 的完整代码 http://codepen.io/zengkan0703... ,
这是我修改成 for 循环的效果 http://codepen.io/zengkan0703...
更新:由于粗心把 + 写成了 - ,太尴尬了,耻辱柱。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

reply all(2)
PHPzhong

你这错误,跟你的描述并不一样。太粗心了。

伊谢尔伦

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template