首页 > TAG信息列表 > fns
手写组合函数
function whCompose(...fns) { let length = fns.length; for (let i = 0; i < length; i++) { if (typeof fns[i] !== 'function') { throw new TypeError('Expected params are functions'); } } return function com(...params) { leShapeNet数据集及dataset代码分析
1数据集简介 ShpaeNet是点云中一个比较常见的数据集,它能够完成部件分割任务,即部件知道这个点云数据大的分割,还要将它的小部件进行分割。它总共包括十六个大的类别,每个大的类别有可以分成若干个小类别(例如,飞机可以分成机翼,身体等小类别),总共有五十个小类别。下面可视化一下,经过JavaScript中的class:实现一个事件类,使用订阅发布模式
class Event { constructor() { // 存储事件的数据结构 // 为了查找迅速,使用了对象(字典) this._cache = {}; } // 绑定 on(type, callback) { // 为了按类查找方便和节省空间, // 将同一类型事件放到一个数组中 // 这里的数组是队列,遵循先进先几种常用设计模式的简单示例
前言 模式是在某一背景下某个问题的一种解决方案。 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 为了保证代码的可靠性、提高代码的复用率、使代码更容易被维护和阅读,我们需要了解并合理使用设计模式。 日常开发中,一些特定的场JS发布订阅者模式
class MesNotify { constructor() { this.listeningList = [] // 监听列表 } // 发布 publicListen(key, fn) { (this.listeningList[key] || (this.listeningList[key] = [])).push(fn) } // 订阅 trigger() { let triggerRef通过发布订阅模式实现组件间的通信
前言 各种技术框架,比如 vue、react 和小程序,实现父子组件和兄弟组件通信的方案有很多,大多方案都强依赖于框架本身。这里介绍一种通过发布和订阅的方式来实现组件通信的方案,纯 JavaScript 实现,可以适用于各种框架。 发布订阅模式 发布订阅模式包含三部分内容,发布者、订阅者和数据处柯里化
//定义柯里化函数 function curry(fn) { //定义一个空数组 var arr = []; //闭包,返回一个匿名函数 return function () { //如果参数的长度等于0时(就是不填参数,如下面的fns()) if (arguments.length === 0) {Vue中使用时间过滤器——date-fns
一、date-fns与moment比较 moment打包后最终压缩是68kb多,而date-fns打包后最后压缩只有5kb多, 二、date-fns使用 2.1.安装date-fns npm install --save date-fns 2.2.在js文件中引用 /* filters.js */import Vue from 'vue' // import moment from 'moment' imC业务代码脚本
近来看了一个代码,这种代码结构需要设计好一些基础业务功能proc_fns, 有了这些基础proc_fns后,就可以通过xml来配置宏TEST_SCRIPT,生成对应的脚本源文件。 比较多的使用是base_fns的参数,有事件id,事件数据msg,有事件回调函数指针callback。 通过多种结合,代码里面的结构容器是数组,可以使时间格式化
时间格式化方式一:自写过滤器方式二:date-fns插件 方式一:自写过滤器 Vue.filter('dateFormat',function(originVal){ const dt = new Date(originVal) const y = dt.getFullYear() const m = (dt.getMonth() + 1 + '').padStart(2,'0') const d = (dt.getDate() +vue自定义时间过滤器之使用date-fans代替moment
date-fns较moment相比,更为轻量化,在实际开发中推荐使用date-fns。下面介绍它的使用方式: 1.安装date-fns npm i --save date-fns 2.在filters/filter.js中 import Vue from vue import format from 'date-fns/format' //自定义过滤器 Vue.filter('date-format',functionjavascript 手写promise 发布订阅简单实现
var fs = require('fs') var p1 = new Promise((resolve, reject) => { fs.readFile('./data/a.txt', 'utf8', function(err, data){ if(err){ reject(err) } else { resolve(data) } }) }) var p2 = new Promise((resolve,Javascript 设计模式(3) —— 发布订阅模式
发布—订阅模式可以用一个全局的 Event 对象来实现,订阅者不需要了解消 息来自哪个发布者,发布者也不知道消息会推送给哪些订阅者,Event 作为一个类似“中介者” 的角色,把订阅者和发布者联系起来。 发布订阅模式 var Event = (function(){ var clientList = {}, listenjs 观察者模式
想要成为一个优秀的人,最重要的事情是培养良好的习惯。 什么是观察者模式呢? 观察者模式 又叫做发布-订阅模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当主题对象的状态发生变化的时候,需要通知所有的观察者对象,使得他们去更新。 在观察者模式中,并不知一个JavaScript中pipe实战
JavaScript中pipe原理 代码示例 const pipe = (...fns) => x => fns.reduce((y, f) => f(y), x); 原理 一行代码中信息量是非常丰富的,可以从以下几个方面来分析 (...fns) ...是ES6标准中的数组扩展运算符 扩展运算符可以展开数组: Math.max(...[1,2,3]) 等价于 Math.max(1,2,3) 同