for 循环与这个自定义方法 forEach 的效果为什么不一样

网上的一个 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...

陪伴而非守候
浏览 478回答 1
1回答

qq_笑_17

你这错误,跟你的描述并不一样。太粗心了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript