JS模式:Mixin混合模式,=_=!就是常见的Object.create()或者_extend()
2023-09-11 14:17:27 时间
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <script> var Person = function(firstName,lastName){ this.firstName = firstName; this.lastName = lastName; this.genter = 'male'; }; var clark = new Person('Clark','kent'); console.log(clark);// ->_-> Person {firstName: "Clark", lastName: "kent", genter: "male"} //通过试用call方法,让superhero继承person函数内部的所有属性,理解为执行一遍,并把,执行的语句赋给当前的this; var Superhero = function(firstName,lastName,powers){ person.call(this,firstName,lastName); this.powers = powers; }; /*__________________________________________________________________________________________________________*/ var Car = function(setting){ this.model = setting.model || 'no model provided'; this.color = setting.color || 'no color provided'; }; var Mixin = function(){}; Mixin.prototype = { driveForward : function(){ console.log( "drive forward" ); }, driveBackward : function(){ console.log("drive backward"); }, driveSideways : function(){ console.log("drive sideways") } }; function augment(receivingClass,givingClass){ if(arguments[2]){ for(var i =0; i<arguments.length; i++){ receivingClass.prototype[arguments[i]] = givingClass.prototype[arguments[i]]; }; }else{ for(var method in givingClass){ if(!receivingClass.hasOwnProperty[methodName]){ receivingClass.prototype[methodName] = givingClass.prototype[methodName] }; }; }; }; augment(Car,Mixin,"driveForward","driviBackward"); var myCar = new Car({ model : 'ford++++', color : '#f00' }) myCar.driveForward() // drive forward </script> </body> </html>
相关文章
- js将时间戳格式化为HH:ii:ss的格式
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- JS监听不到被操作后dom的事件,js动态生成的DOM绑定事件失效,解决方案
- 【小程序】wxml页面如何调用js中的变量数据?(图文示例)
- Vue - 实现用 JS 调用自定义组件 / 类似 ElementUI 弹框组件(在 js 文件中通过 this.xxx 方式调用并显示自定义弹框模态框组件)
- Vue - 在纯 JS 文件中调用自定义组件 / 类似 ElementUI 弹框组件 Message、Modal(在纯 js 文件中通过 import 方式引入并调用弹框模态框组件显示出来,)
- ES6教程-字符串,函数的参数,了解函数的arguments对象,js面向对象,设计模式-单例模式,解构赋值
- js设计模式--发布订阅模式
- GIS-010-ArcGIS JS 三种查询模式(转)
- js遍历删除数组中不符合条件的元素
- JS模式:简单的图书馆享元模式
- JS_工厂模式
- JS所谓的享元模式-->
- 《Ember.js实战》——2.4 观察者模式
- JS数组对象排序
- js用for...in 这种遍历的方式
- vue.js不仅是一种模式,也是一种工程组织方式
- 《Node.js区块链开发》——第3章 共识机制,可编程的利益转移规则 3.1 机制,左右产品走向的根源
- 《Node.js区块链开发》——3.7 参考
- 前后端加密解密 【JS加密模块(md5 、 crypto 、 crypto-js、jsencrypt) python RSA加密解密(pycryptodome )模块安装与使用】
- js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素
- js面向对象、创建对象的工厂模式、构造函数模式、原型链模式
- [js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表
- (42)JS运动之多物体框架--多个div变宽
- 区分JS中的undefined,null,"",0和false
- JQuery/JS插件 linq.js 入门
- node.js—安装bcrypt出现错误的解决办法