我试图创建一个函数构造函数:
var obj = function() {
this.num = 2;
this.func = function() {
// need to access the **instance** num variable here
};
};
var instance = new obj();
我需要从对象的属性(函数func)访问实例属性。但它不起作用,因为this
始终是当前的函数..
答案 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