获取实例化构造函数的调用对象?

时间:2013-12-18 20:02:15

标签: javascript constructor reference nested

我不确定这个标题是否正确,但这就是我所拥有的......

function A() {};

A.prototype.B = function(){
   this.backref = //??  --  should be set to "a"
};

var a = new A();  // specialized factory...

var b = new a.B();  // instantiate an "a" specialized version of B
var zztop = b.backref instanceof A; //would be true

我需要将backref分配给调用B构造函数的实例“a”。我怎样才能做到这一点?我查看了Chrome调试器中的所有属性,我甚至不确定它是否可行。有人知道怎么做吗?我需要这样做,因为我需要访问存储在“a”中的变量。或者有更好的方法来做类似的事情吗?

2 个答案:

答案 0 :(得分:1)

我不确定是否有办法只使用给你的属性来执行此操作,但是你总是可以将backref作为B构造函数的参数之一:

A.prototype.B = function(backref) {
    this.backref = backref;
}

var a = new A();
var b = new a.B(a);

丑陋,但确实有效。

答案 1 :(得分:0)

您所描述的内容称为继承。您希望对象B继承对象A的属性。

function A() {
  this.length = 3;
}

function B() {
  this.height = 5;
}

B.prototype = new A();
B.prototype.constructor = B;

var obj = new B();

obj.height;  // returns 5
obj.length;  // returns 3

这是一个jsFiddle:http://jsfiddle.net/d6QeT/