Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“javascript访问”;这";函数内构造函数_Javascript_Function_Object_Properties_Constructor - Fatal编程技术网

“javascript访问”;这";函数内构造函数

“javascript访问”;这";函数内构造函数,javascript,function,object,properties,constructor,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始终是当前函数。将this存储在func可以访问的变量

我正在尝试创建一个函数构造函数:

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

var instance = new obj();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

您可以使用用于创建自定义构造函数的自定义构造函数来执行此操作,并且可以毫无问题地访问自定义构造函数,请尝试:

var Obj=函数(){
this.num=2;
this.func=函数(){
警报(“我有”+这个.num);
返回“我有”+this.num;
};
};
var实例=新的Obj();

instance.func()//将返回并显示我有2个
您可以使用自定义构造函数函数执行此操作,用于创建自定义构造函数,并且可以毫无问题地访问它,请尝试:

var Obj=函数(){
this.num=2;
this.func=函数(){
警报(“我有”+这个.num);
返回“我有”+this.num;
};
};
var实例=新的Obj();

instance.func()//将返回并显示我有2个
您可以使用自定义构造函数函数执行此操作,用于创建自定义构造函数,并且可以毫无问题地访问它,请尝试:

var Obj=函数(){
this.num=2;
this.func=函数(){
警报(“我有”+这个.num);
返回“我有”+this.num;
};
};
var实例=新的Obj();

instance.func()//将返回并显示我有2个
您可以使用自定义构造函数函数执行此操作,用于创建自定义构造函数,并且可以毫无问题地访问它,请尝试:

var Obj=函数(){
this.num=2;
this.func=函数(){
警报(“我有”+这个.num);
返回“我有”+this.num;
};
};
var实例=新的Obj();

instance.func()//将返回并显示我有2个
很有趣的是,您也可以使用
\u this.num
\u this.func
。这是为了代码的一致性吗?因为我将它们保留为
this
,只在方法中使用
\u this
。@Andy是的,这纯粹是为了一致性/可维护性。这两种方法都没有提高性能。有趣的是,您也使用了
\u this.num
\u this.func
。这是为了代码的一致性吗?因为我将它们保留为
this
,只在方法中使用
\u this
。@Andy是的,这纯粹是为了一致性/可维护性。这两种方法都没有提高性能。有趣的是,您也使用了
\u this.num
\u this.func
。这是为了代码的一致性吗?因为我将它们保留为
this
,只在方法中使用
\u this
。@Andy是的,这纯粹是为了一致性/可维护性。这两种方法都没有提高性能。有趣的是,您也使用了
\u this.num
\u this.func
。这是为了代码的一致性吗?因为我将它们保留为
this
,只在方法中使用
\u this
。@Andy是的,这纯粹是为了一致性/可维护性。无论哪种方式,性能都没有提高,即使你的代码运行良好。即使你的代码运行良好。即使你的代码运行良好。即使你的代码运行良好。我看到self是一个局部变量。我猜它不会被垃圾收集?self是否只是为每个作用域重新创建,它类似于C中的静态变量?我看到self是一个局部变量。我猜它不会被垃圾收集?self是否只是为每个作用域重新创建,它类似于C中的静态变量?我看到self是一个局部变量。我猜它不会被垃圾收集?self是否只是为每个作用域重新创建,它类似于C中的静态变量?我看到self是一个局部变量。我猜它不会被垃圾收集?self是否只是为每个作用域重新创建,它类似于C中的静态变量?