javascript在函数构造函数中访问“this”

时间:2015-03-09 11:20:08

标签: javascript function object properties constructor

我试图创建一个函数构造函数:

var obj = function() {
    this.num = 2;
    this.func = function() {
        // need to access the **instance** num variable here
    };
};

var instance = new obj();

我需要从对象的属性(函数func)访问实例属性。但它不起作用,因为this始终是当前的函数..

4 个答案:

答案 0 :(得分:3)

this存储在func可以访问的变量中:

var obj = function() {
    var _this = this;
    _this.num = 2;
    _this.func = function() {
        console.log(_this.num);
    };
};

答案 1 :(得分:0)

请使用众所周知的方法,将this存储到单独的字段中:

    var obj = function() {
      self = this;
      self.num = 2;
      self.func = function() {
       alert(self.num);
          // need to access the **instance** num variable here
      };
    };

   var instance = new obj();

答案 2 :(得分:0)

这是我用于解决问题的模式:

var obj = function(){
  var self = this;
  this.num = 2;
  this.func = function() {
    console.info(self.num);
  };
};

var instance = new obj();

变量self现在可以在obj的所有函数中访问,并且始终是obj本身。

这是相同的:

var obj = function(){
  var self = this;
  self.num = 2;
  self.func = function() {
    console.info(self.num);
  };
};

var instance = new obj();

答案 3 :(得分:0)

您可以使用自定义构造函数来创建自定义构造函数,并且访问它没有任何问题,请尝试:



var Obj = function () {
     this.num = 2;
     this.func = function () {
         alert("I have " + this.num);
         return "I have " + this.num;
     };
};

var instance= new Obj();
instance.func();//will return and show I have 2