functionMixin(recClass, giveClass){if(arguments.length >2){for(let i =2; i < arguments.length; i++){
recClass.prototype[arguments[i]]= giveClass.prototype[arguments[i]];}}else{for(let property in giveClass.prototype){
recClass.prototype[property]= giveClass.prototype[property];}}};
實例
functionCar(name, speed){this.name = name;this.speed = speed;}
Car.prototype.now=function(){
console.log(this.name,this.speed);}
Car.prototype.limit=function(){
console.log('speed limit 120km/h')}
Car.prototype.drive=function(){
console.log('Car can drive');}functionFuture(){}
Future.prototype.fly=function(){
console.log('Car can fly in future');}
Future.prototype.limit=function(){
console.log('speed not limit');}var car =newCar('ferrari',80);
car.now();
car.limit();
car.drive();Mixin(Car, Future);var carFuture =newCar('future',200);
carFuture.now();
carFuture.limit();
carFuture.drive();
carFuture.fly();//=>// ferrari 80// speed limit 120km/h// Car can drive// future 200// speed not limit// Car can drive// Car can fly in future
Mixin(Car, Future,'fly');var car =newCar('ferrari',80);
car.now();
car.limit();
car.drive();Mixin(Car, Future);var carFuture =newCar('future',200);
carFuture.now();
carFuture.limit();
carFuture.drive();
carFuture.fly();//=>// ferrari 80// speed limit 120km/h// Car can drive// future 200// speed limit 120km/h// Car can drive// Car can fly in future