Javascript - 初始化变量?
Javascript - initializing variables?
在 fiddle - http://jsfiddle.net/7fh0x901/1/ 中,我在调用 show 方法时未定义。怎么了?
我在找什么 - 尝试在调用对象时初始化名称和年龄。
function a(name, age) {
this.name;
this.age;
(function x() {
this.name = name;
this.age = age
alert(this.name+" <<inside self invoking>> "+this.age);
})();
this.show = function() { alert(this.name+" <<show>> "+this.age); }
}
var a1 = new a("rahul", 24);
a1.show();
建造得当
function a(name, age) {
this.age = age;
this.name = name;
show: function() { alert(name+' '+age); }
}
删除 x()
函数。它不是必需的并且会导致问题,因为 this
在 Javascript 中的每个函数调用时都会重置,因此 x()
函数中 this
的值将是 window
对象或 undefined
(如果在严格模式下)。
您可以改用这种简化:
function a(name, age) {
this.name = name;
this.age = age;
this.show = function() { alert(this.name+" <<show>> "+this.age); }
}
var a1 = new a("rahul", 24);
a1.show();
您在内部函数 x 中创建了一个新范围,因此 "this" 与之前的 "this" 不同。也许您想定义的是
function a(name, age) {
this.name;
this.age;
var that = this;
(function x() {
that.name = name;
that.age = age
alert(that.name+" <<inside self invoking>> "+that.age);
})();
this.show = function() { alert(this.name+" <<show>> "+this.age); }
}
var a1 = new a("rahul", 24);
a1.show();
我想你正在找这个。
在 fiddle - http://jsfiddle.net/7fh0x901/1/ 中,我在调用 show 方法时未定义。怎么了?
我在找什么 - 尝试在调用对象时初始化名称和年龄。
function a(name, age) {
this.name;
this.age;
(function x() {
this.name = name;
this.age = age
alert(this.name+" <<inside self invoking>> "+this.age);
})();
this.show = function() { alert(this.name+" <<show>> "+this.age); }
}
var a1 = new a("rahul", 24);
a1.show();
建造得当
function a(name, age) {
this.age = age;
this.name = name;
show: function() { alert(name+' '+age); }
}
删除 x()
函数。它不是必需的并且会导致问题,因为 this
在 Javascript 中的每个函数调用时都会重置,因此 x()
函数中 this
的值将是 window
对象或 undefined
(如果在严格模式下)。
您可以改用这种简化:
function a(name, age) {
this.name = name;
this.age = age;
this.show = function() { alert(this.name+" <<show>> "+this.age); }
}
var a1 = new a("rahul", 24);
a1.show();
您在内部函数 x 中创建了一个新范围,因此 "this" 与之前的 "this" 不同。也许您想定义的是
function a(name, age) {
this.name;
this.age;
var that = this;
(function x() {
that.name = name;
that.age = age
alert(that.name+" <<inside self invoking>> "+that.age);
})();
this.show = function() { alert(this.name+" <<show>> "+this.age); }
}
var a1 = new a("rahul", 24);
a1.show();
我想你正在找这个。