function foo() {
bar = 'ok';
new baz( this );
}
function baz( foo ) {
alert( foo.bar );
}
new foo();
为什么警报显示“未定义”而不是“确定”?
function foo() {
bar = 'ok';
new baz( this );
}
function baz( foo ) {
alert( foo.bar );
}
new foo();
为什么警报显示“未定义”而不是“确定”?
bar已超出范围。范围和上下文是有区别的。如果要将属性附加到foo,则必须将属性附加到函数。
function foo() {
this.bar = 'ok';
new baz(this);
}
function baz(foo) {
alert(foo.bar);
}
new foo();
这是因为 foo.bar 是一个私有变量。把它改成这个,它会工作的
function foo() {
this.bar = 'ok';
new baz(this);
}
function baz(foo) {
alert(foo.bar);
}
new foo();
因为变量不是属性(WRT 全局变量/属性除外)。您正在bar通过不使用该var语句来创建一个全局变量。即使您使用var,它也不会显示在正在构造的对象上。
由于您使用的是new,因此您可以将属性设置为this。
this.bar = "ok"
所以完整的代码是......
function foo() {
this.bar = 'ok';
new baz(this);
}
function baz(foo) {
alert(foo.bar);
}
new foo();
顺便说一句,new关键字被浪费了,baz因为您没有保留任何创建的对象。
在您的baz函数foo中没有作为参考传递,它是参数的占位符。当您这样做时,new foo您将foo其用作构造函数。bar是全局的,因为它没有用varor声明this.bar。我认为你需要重新审视基础知识,这个问题太错误了......