SOURCE

// 抽象类
// var car = function() {}
// car.prototype = {
//     getPrice: function() {
//         console.error('getPrice 未实现')
//     },
// }

// new car().getPrice()

// var smallCar = function() {}
// smallCar.prototype = new car()

// new smallCar().getPrice()

// var s = new smallCar()
// s.getPrice = function() {
//     console.log('getPrice 已实现')
// }
// s.getPrice()


var Parent = function(child,fnName) {
    if(typeof Parent[fnName] === 'function') {
        function F() {}
        F.prototype = new Parent[fnName]()
        // child.constructor = child // 多余
        child.prototype = new F()
    } else {
        throw new Error('不存在此抽象类')
    }
}
Parent.car = function() {
    this.name = '越野车'
}
Parent.car.prototype = {
    getName() {
        throw new Error('抽象方法不可调用')
    }
}

function smallCar() {}

Parent(smallCar,'car')

const sc = new smallCar()

sc.getName()
console 命令行工具 X clear

                    
>
console