使用JavaScript进行面向对象开发 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

this的难控性

由于this表示的是当前实例。再加上JavaScript是可以传递方法的,那么就会出现在方法嵌套时,this难以控制的情况。 另外在JavaScript语言本身设计上的一些缺陷,会导制下面这种情况,this指向了window对象。

//一个计算方法,method是具体的计算方法
function calc(a,b,method){

    //定义一个内部加班,当method == "+" 时使用
    var add = function(a,d){
        //此时的this 是window实例
        return a + b;
    }
    if(method == "+"){
        return add(a,b);
    }
}