//原型工厂模式 function extend(target, origin) { target.prototype = Object.create(origin.prototype);//此方法创建了一个对象,修改父类原型与子类原型相互独立 Object.defineProperty(target.prototype, "constructor", { value: target, enumerable: false }) } //对象工厂模式 function User(age, name) { this.age = age; this.name = name; } function member(age, name) { let instance = Object.create(User.prototype); User.call(instance, age, name); instance.pri = function () { console.log([age, name]); } return instance; } var queen = member(11, ‘Tom‘);
//通过mixin实现多继承 let admin = { prtadmin() { return "admin"; } } let user = { __proto__: admin, // mixin的内部继承 prtuser() { console.log(super.prtadmin() + "user"); //super关键字 = this.__proto__ } }; // 向函数原型内添加方法的三种方式 // Fun.prototype.user = user.prtuser; // Fun.prototype.admin = admin.prtadmin; 该方法可以将添加的方法进行重命名 // Object.assign(Fun.prototype, admin, user); 使用Object.assign方法会改变原对象 // Fun.prototype = Object.assign(Fun.prototype, admin, user); function Fun() { } let fun = new Fun();
原文地址:https://www.cnblogs.com/chuangqianmingyueguang/p/12174672.html
时间: 2024-11-13 06:34:40