无法访问 Javascript 对象中的变量
Can't access variable in Javascript object
不明白为什么不能通过object对象的全局函数中的b或c变量访问, 在 JS 对象中的变量继承遇到了一些麻烦。
var object = {
a: 'a',
global: function() {
var b = 'b';
this.c = 'c';
},
render: function() {
console.log('render()');
return this.a + ' / ' + this.global.b + ' / ' + this.global.c;
}
};
它呈现: a / undefined / undefined
b
是分配给全局函数的局部变量。它不是分配给 object
的对象的 属性。
c
是一个属性,在调用object.global()
后,将设置在分配给object
的对象上。它不是分配给 global
.
的函数的 属性
如果你想像那样访问 b
和 c
那么你需要将函数设为一个对象:
global: {
b: 'b';
c: 'c';
},
…或者使它们成为函数的属性…
global: function () {
// The function can do something
},
// Outside the definition of object:
object.global.b = "b";
object.global.c = "c";
…或者你可以让函数return它们,然后在调用函数后访问它们:
global: function () {
return { b: "b", c: "c" };
},
// later
this.global().b;
this.global().c;
B 是全局的局部变量,而不是它的 属性。而c被明确定义为对象的一个属性,不是全局的
全局是一个函数。功能 return 东西。 b
只能在函数内访问,不能从外部访问。 this.c
也是如此。 this.c
!= global.c
看看这个。它将解释为什么 b
和 this.c
是作用域 global
的私有变量:
var object = {
a: 'a',
global: function(which) {
var b = 'b';
this.c = "c";
return {b:b, c:this.c}
},
render: function() {
console.log('render()');
return this.a + ' / ' + this.global().b + ' / ' + this.global().c;
}
};
document.write(object.render())
在此示例中,全局函数现在 returns 个值。
这样试试:
var object = {
a: 'a',
global: {
this.b = 'b';
this.c = 'c';
},
render: function() {
console.log('render()');
return this.a + ' / ' + this.global.b + ' / ' + this.global.c;
}
};
Scope 在 JavaScript 中很棘手,但是当你在函数内部用 var
声明一个变量时,它是该函数的私有变量。例如:
function getValue(){
var x=10;
this.x=20;
return x;
}
getValue();// Returns 10
new getValue().x;// Returns 20
this.x是"privileged",只能通过所属的实例化对象访问。
var x 是 "private",它只能在它定义的 function/scope 中访问。
不明白为什么不能通过object对象的全局函数中的b或c变量访问, 在 JS 对象中的变量继承遇到了一些麻烦。
var object = {
a: 'a',
global: function() {
var b = 'b';
this.c = 'c';
},
render: function() {
console.log('render()');
return this.a + ' / ' + this.global.b + ' / ' + this.global.c;
}
};
它呈现: a / undefined / undefined
b
是分配给全局函数的局部变量。它不是分配给 object
的对象的 属性。
c
是一个属性,在调用object.global()
后,将设置在分配给object
的对象上。它不是分配给 global
.
如果你想像那样访问 b
和 c
那么你需要将函数设为一个对象:
global: {
b: 'b';
c: 'c';
},
…或者使它们成为函数的属性…
global: function () {
// The function can do something
},
// Outside the definition of object:
object.global.b = "b";
object.global.c = "c";
…或者你可以让函数return它们,然后在调用函数后访问它们:
global: function () {
return { b: "b", c: "c" };
},
// later
this.global().b;
this.global().c;
B 是全局的局部变量,而不是它的 属性。而c被明确定义为对象的一个属性,不是全局的
全局是一个函数。功能 return 东西。 b
只能在函数内访问,不能从外部访问。 this.c
也是如此。 this.c
!= global.c
看看这个。它将解释为什么 b
和 this.c
是作用域 global
的私有变量:
var object = {
a: 'a',
global: function(which) {
var b = 'b';
this.c = "c";
return {b:b, c:this.c}
},
render: function() {
console.log('render()');
return this.a + ' / ' + this.global().b + ' / ' + this.global().c;
}
};
document.write(object.render())
在此示例中,全局函数现在 returns 个值。
这样试试:
var object = {
a: 'a',
global: {
this.b = 'b';
this.c = 'c';
},
render: function() {
console.log('render()');
return this.a + ' / ' + this.global.b + ' / ' + this.global.c;
}
};
Scope 在 JavaScript 中很棘手,但是当你在函数内部用 var
声明一个变量时,它是该函数的私有变量。例如:
function getValue(){
var x=10;
this.x=20;
return x;
}
getValue();// Returns 10
new getValue().x;// Returns 20
this.x是"privileged",只能通过所属的实例化对象访问。
var x 是 "private",它只能在它定义的 function/scope 中访问。