我有一个类似下面的课程。我们的想法是初始化并返回B2的对象,但保持两个构造函数的身份相似。我不知道这是否适用于javascript以及以何种方式进行操作
function B(privateArgs) { /* B1 Visible constructor only for encapsulation*/
function B(args) { /* class B2 for implementation */
}
var construct = new B(privateArgs);
/* inits B2 */
/*Idea is to make (B2Instance instanceof B1Instance) === TRUE via prototype */
/* tried construct.prototype.constructor = this.prototype.constructor */
B.prototype.constructor = this.prototype.constructor;
return construct;
}
var a = new B();
/* inits new B1 but returns instanceof B2 */
console.log(a instanceof B); //false
我想让外部构造函数B1在针对B2的Object进行测试时通过instanceof测试。因为这就是我们打算上课的方式。
答案 0 :(得分:0)
如果我理解正确,你正在寻找这样的东西:
function outer(privateArgs) {
function inner(args) {
}
inner.prototype = outer.prototype;
var newObj = new inner(privateArgs);
return newObj;
}
var a = new outer();
console.log(a instanceof outer); // true

X instanceof Y
检查X.__proto__
是否等于Y.prototype
,要使其按您的意愿运作,您必须inner
outer
的原型,因此,当您执行newObj = new inner
时,newObj.__proto__
将设置为outer.prototype
。