- 博客(12)
- 收藏
- 关注
原创 js 设计模式-策略模式
定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。目的:就是将算法的使用和实现分离开来。除了封装算法,还可以封装业务规则以下为js简单的实现:// 选择不同交通方式去计算需要花费的总价var Strategies = { "ship": function(num) { return 500 * num }, "plane": function(num) { return 1000 * num },
2021-08-14 21:47:53 66
原创 js 设计模式-单例模式
定义保证一个类仅有一个实例,并提供一个访问它的全局访问点简单实现单例模式// 不透明性的实现方式var Singleton = function(className) { this.className = className}Singleton.prototype.getClassName = function() { return this.className}Singleton.getInstance = (function(){ var insta
2021-08-14 21:04:14 107
原创 let、const和var命令
一、let 命令变量的声明作用域只是在所命令所在的代码块内有效{ let a = 111 var b = 1}console.log(a) // ReferenceError: a is not definedconsole.log(b) // 1可以看出来,let和var声明变量在块级作用域内,在外部var可以证明访问,而let就会报错。比如在for循环中的各种应用:let在for循环里应用for(let i = 0; i< 6; i ++) {
2021-08-13 21:12:11 125
原创 js 原生实现call、apply、bind
一、实现callFunction.prototype.myCall = function(context, ...args) { if(typeof this !=='function') { throw new TypeError('不是函数') } context = context || window context.fn = this const res = context.fn(...args) delete context.f
2021-08-12 18:16:57 68
原创 js 实现map、foreach、filter、find、findIndex
一、实现map方法,map会返回一个新的数组Array.prototype.myMap = function (callback) { if (typeof callback !== 'function' || Array.isArray(this) || !this.length) { throw new TypeError('报错了'); } let res = [] for (let i=0; i < this.length; i++) {
2021-08-12 18:00:25 230
原创 redux源码二:applyMiddleware
export default function applyMiddleware( ...middlewares: Middleware[]): StoreEnhancer<any> { return (createStore: StoreEnhancerStoreCreator) => <S, A extends AnyAction>( reducer: Reducer<S, A>, preloadedState?: Pr.
2021-08-06 14:24:43 93
原创 理解redux源码一
redux提供了createStore,combineReducers,bindActionCreators,applyMiddleware,compose等这几个API.一、下面首先说createStorecreateStore函数传入参数有reducer、preloadedState、enhancer,经常可能只传入reducer、enhancer,流程如下:1)getState执行返回currentState,也就是当前的state2)subscribe 增加一个订阅者,nex
2021-07-27 19:14:56 60
原创 vue之VNode
export interface VNode< HostNode = RendererNode, HostElement = RendererElement, ExtraProps = { [key: string]: any }> { /** * @internal */ __v_isVNode: true /** * @internal */ [ReactiveFlags.SKIP]: true type: VNodeTypes .
2021-05-03 15:23:25 615
原创 react children提供的5个API
react children提供的5个API:forEach、map、count、only、toArray核心实现函数源码:function mapIntoArray( children: ?ReactNodeList, array: Array<React$Node>, escapedPrefix: string, nameSoFar: string, callback: (?React$Node) => ?ReactNodeList,): number
2021-04-18 19:11:20 268
原创 react之ReactBaseClasses
react之ReactBaseClasses定义了Component、PureComponent,PureComponent继承了Component。Component源码:import ReactNoopUpdateQueue from './ReactNoopUpdateQueue';const emptyObject = {};/** * Base class helpers for the updating state of a component. */function Com
2021-04-18 17:25:47 159 1
原创 createContext 创建上下文
react createContext 创建上下文源码:export type ReactContext<T> = { $$typeof: Symbol | number, Consumer: ReactContext<T>, Provider: ReactProviderType<T>, _currentValue: T, _currentValue2: T, _threadCount: number, // DEV only...
2021-04-18 17:07:06 180
转载 CSRF跨站请求伪造
CSRF(Cross-site request forgery,中文为跨站请求伪造)是一种利用网站可信用户的权限去执行未授权的命令的一种恶意攻击。通过伪装可信用户的请求来利用信任该用户的网站,这种攻击方式虽然不是很流行,但是却难以防范,其危害也不比其他安全漏洞小。本文将简要介绍CSRF产生的原因以及利用方式,然后对如何避免这种攻击方式提供一些可供参考的方案,希望广大程序猿们都能够对这种攻击方式...
2019-08-09 14:16:19 145
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人