为什么'fn'无法访问'a'属性

Vig*_*rma 0 javascript

var red = {a: 2};

red.fn = function(b){
    console.log("A: "+a ", B : "+b);
}

red.fn(20);
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

a 没有定义

但我怀疑a已经可以作为函数的全局对象,fn那么为什么它不可访问.任何解释都会有所帮助.

T.J*_*der 6

因为与其他一些语言不同,this.限定符在JavaScript中不是可选的(因为它的工作原理与大多数其他语言的工作方式不同this; 此处更多).你需要明确地写它:

red.fn = function(b){
    console.log("A: " + this.a + ", B : " + b);
// ---------------------^^^^^
}
Run Code Online (Sandbox Code Playgroud)

(你也在+那里失踪......)