在o2和o3对象中,我知道我可以使用this.bar访问条形键,但是如何访问foo?
function foo(){
console.log(this.bar);
}
var bar = "bar1";
var o2 = {bar:"bar2", foo:foo};
var o3 = {bar:"bar3", foo:foo};
foo();
o2.foo();
o3.foo();
答案 0 :(得分:1)
但我如何访问foo
this.foo
可以在foo
函数中使用,也可以只用foo
,因为该函数也可以在变量作用域中使用。
因此,如果您执行this.foo()
,则会获得bar
对象的this
属性的值,但如果您执行了foo()
,则会得到bar
foo
变量,如果它在全局范围内。
无论哪种方式,请注意,如果从foo
内部调用foo
,它将是一个没有转义子句的递归调用,并且您将超出堆栈限制。
为什么this.foo不起作用?
如果您在foo
函数之外执行此操作,只要在全局范围内定义了foo
函数,它就会起作用。如果this.foo()
函数位于本地范围内,则{{1}}将无法看到它。