请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,为什么我这样创建混合实例是不对的?

class axios {

    request() {

        console.log('request')

    }

    a() {

        console.log('a')

    }

    b() {

        console.log('b')

    }

}

function createInstance() {

    let ctx = new axios()

    let instance= axios.prototype.request.bind(ctx)

    extend(instance, ctx)

    return instance

}

function extend(to, from) {

    for (var key in from) {

        to[key] = from[key];

    }

    return to;

}

let testInstance = createInstance()

testInstance()

testInstance.a()

Uncaught TypeError: testInstance.a is not a function




正在回答

1回答

因为咱们的项目配置的编译目标是es5, es5时for-in能获取原型的属性,
es6不行,你这段代码直接执行是es6环境,可以tsc --target es5 | es6来测试

1 回复 有任何疑惑可以回复我~
  • 提问者 前端渣渣灰 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-06-28 09:16:39
  • 提问者 前端渣渣灰 #2
    你好,我还想问一下为什么我用babel转的es5也不行 ? 他把属性挂到defineProperty上面去了, 而用tsc是转化成prototype就可以
    回复 有任何疑惑可以回复我~ 2019-06-28 10:17:49
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号