如何更改类

时间:2018-03-29 19:08:05

标签: javascript constructor

我有一个类似下面的课程。我们的想法是初始化并返回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测试。因为这就是我们打算上课的方式。

1 个答案:

答案 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