Javascript 引用“this”是否比上下文对象快?

Javascript 引用“this”是否比上下文对象快?,javascript,Javascript,我正在为画布渲染器重写一个类构造函数,使其仅为一个类。我认为这个项目不需要多个画布。通过“this”引用类是否比在其函数中引用其名称更快?我知道引用闭包上下文比引用全局上下文要快,但我很好奇这是作为全局上下文还是上下文的一部分存在 以下是我的课程供参考: canvasObj = { //canvas initialiser init: function(){ this.el=document.getElement; this.c=this.el.getC

我正在为画布渲染器重写一个类构造函数,使其仅为一个类。我认为这个项目不需要多个画布。通过“this”引用类是否比在其函数中引用其名称更快?我知道引用闭包上下文比引用全局上下文要快,但我很好奇这是作为全局上下文还是上下文的一部分存在

以下是我的课程供参考:

canvasObj = { //canvas initialiser

    init: function(){
        this.el=document.getElement;
        this.c=this.el.getContext('2d');
        this.objs=[];
        this.resetSize();
        this.bAnim=false;
        console.log("canvas initialised");
    },

    clear: function(c){ //fills whole canvas with opaque grey, faster than clearRect()
        if(!c)this.c.fillStyle="#FFFFFF";
        this.c.fillRect(0, 0, this.el.width, this.el.height);
    },

    resetSize: function(){ //resizes  the canvas to window size
        this.el.style.width = window.innerWidth + "px";
        this.el.style.height = window.innerHeight + "px";
        this.el.width = window.innerWidth;
        this.el.height = window.innerHeight;
        this.w=window.innerWidth;
        this.h=window.innerHeight;
        this.o=this.w/this.h;
        console.log("size changed");
    },

    update: function(t){ //runs all stored draw functions
        var i = this.objs.length, selfRef = this, ts = Date.now();
        while(i--){
            this.objs[i](ts-this.ts);
        }
        this.ts=ts;
        if(this.bAnim===true)
            requestAnimationFrame(function(t){selfRef.update(t);});
    },

    addDraw: function(fn){ //adds new draw function to stack
        this.objs.unshift(fn);
    },

    startAnim: function(){ //starts drawing loop
        var selfRef = this;
        this.ts=Date.now();
        this.bAnim=true;
        requestAnimationFrame(function(t){selfRef.update(t);});
    },

    stopAnim: function(){ //stops drawing loop
        this.bAnim=false;
    }
};

使用jsPerf,看看哪个更快。我知道引用闭包上下文比全局上下文更快。函数的参数这是执行上下文的一个参数,它与闭包无关。它只在当前执行上下文中解析,而从不在作用域链上解析。@RobG当我提到闭包上下文时,我更多的是指函数闭包中的局部变量,而不是“this”。因此,据我所知,“this”始终是顶级上下文的一部分,而不仅仅是重新分配的全局属性?@Barmar我知道我可以使用jsPerf,但我感兴趣的是,如果有人知道为什么而不是什么。这不是一个真正的变量——我敢打赌编译器会生成特殊代码来访问上下文对象,而不必经过作用域链。