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();

我想你正在找这个。