Javascript - 初始化变量?

时间:2015-01-20 07:21:00

标签: javascript constructor

在小提琴中 - 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();

3 个答案:

答案 0 :(得分:0)

摆脱x()功能。它不是必需的并且会导致问题,因为{J}中的每个函数调用都会重置this,因此this函数中的x()值将是window对象或{ {1}}(如果是严格模式)。

您可以改为使用此简化:

undefined

答案 1 :(得分:0)

您在内部函数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();

我认为你正在寻找这个。

答案 2 :(得分:-1)

正确构建

function a(name, age) {
  this.age  = age;
  this.name = name;
  show: function() { alert(name+' '+age); }
}