es6
邵天宇Soy
这个作者很懒,什么都没留下…
展开
-
ES6之let,const和块级作用域
var 第一个就是作用域的问题,var不是针对一个块级作用域,而是针对一个函数作用域。举个例子:function runTowerExperiment(tower, startTime) { var t = startTime; tower.on("tick", function () { ... code that uses t ... }); ... mor...原创 2018-03-14 12:11:26 · 877 阅读 · 2 评论 -
Proxy 实现观察者模式
以下参考阮老师的《ECMAScript 6 入门》需求:给定一个对象,当对象的属性发生赋值时,打印最新的值。思路: observable 函数返回一个原始对象的 Proxy 代理,拦截赋值操作,触发充当观察者的各个函数。//初始化观察者队列const uniqueObserveList = new Set();//将监听回调加入队列const observe = fn =>...原创 2018-09-20 21:29:31 · 833 阅读 · 0 评论 -
Promise的事件循环
1.Promise 新建后立即执行let promise = new Promise(function(resolve, reject) { console.log('Promise'); resolve();});promise.then(function() { console.log('resolved');});console.log('我是同步任务');打印结果依...原创 2018-09-26 19:52:43 · 1933 阅读 · 0 评论 -
ES6中Class的一些个人记录
1.Class的内部所有定义的方法,都是不可枚举的。const funName = 'fun';//类Demo class Demo{ constructor(arg) { } say(){ } speak(){ } [funName](){ }}console.log( Object.keys(Demo.prototype) ) //[...原创 2018-10-25 22:17:24 · 256 阅读 · 1 评论 -
require和import区别
区别1:模块加载的时间require:运行时加载import:编译时加载(效率更高)区别2:模块的本质require:模块就是对象,输入时必须查找对象属性import:ES6 模块不是对象,而是通过 export 命令显式指定输出的代码,再通过 import 命令输入(这也导致了没法引用 ES6 模块本身,因为它不是对象)// CommonJS模块let { exists, read...原创 2018-11-16 19:28:13 · 31582 阅读 · 2 评论 -
js判断2个值是否相等的规则
假设需要判断的是 x==y?1. 如果 x 不是正常值(比如抛出一个错误),中断执行。2. 如果 y 不是正常值,中断执行。3. 如果 Type(x) 与 Type(y) 相同,执行严格相等运算 x === y 。4. 如果 x 是 null , y 是 undefined ,返回 true 。5. 如果 x 是 undefined , y 是 null ,返回 true 。6. 如果...原创 2018-11-27 14:10:22 · 3025 阅读 · 0 评论 -
next.js中的window is not defined
1.问题描述使用了next+express做SSR,引入了富文本编辑器braft-editor(我也不知道自己为什么要用SSR渲染后台界面),代码如下import React from 'react'import BraftEditor from 'braft-editor'import 'braft-editor/dist/index.css'export default class...原创 2018-12-11 23:40:25 · 25297 阅读 · 4 评论 -
react中Component和PureComponent比较
import React, { PureComponent } from 'react';class App extends PureComponent {}import React, { Component } from 'react';class App extends Component {}PureCompoent是一个更具性能的Component的版本除了为你提供了一个具有...原创 2018-12-31 14:12:55 · 1699 阅读 · 0 评论 -
从零搭建一个基于React+Nextjs的SSR网站(二):在Nextjs项目中增加react+redux
具体搭建流程可以参考这篇文章,写得很好也非常详细:用Next.js快速上手React服务器渲染,我就不转载过来了。看完后你会搭建一个自己的本地的静态站点,这个时候我们就可以向这个项目上面添加React和Redux了。与往常的react+redux项目不同的是,以往的react的组件是用Provider容器包裹起来的,可以让容器组件拿到state,比如下面这样...import { Pro...原创 2019-01-07 20:36:32 · 3444 阅读 · 0 评论 -
从零搭建一个基于React+Nextjs的SSR网站(三):在Next项目中使用markdown
github很多开源markdown工具,比如react-markdown,marked等等。可以选择一个自己喜欢的,我这里用的marked。代码中使用也比较方便:import marked from 'marked';import hljs from 'highlight.js'; //代码高亮...hljs.configure({ tabReplace: ' ', cl...原创 2019-01-07 21:09:46 · 2416 阅读 · 0 评论 -
js 集合的交集、补集、差集、去重
///集合取交集 Array.intersect = function () { var result = new Array(); var obj = {}; for (var i = 0; i < arguments.length; i++) { for (var j = 0; j < arguments[i].length; j++)原创 2017-08-31 16:39:36 · 2539 阅读 · 0 评论 -
js中的super
1.this和super的区别:this关键词指向函数所在的当前对象super指向的是当前对象的原型对象2.super的简单应用const person = { name:'jack'}const man = { sayName(){ return super.name; }}Object.setPrototypeOf( m...原创 2018-09-12 22:27:30 · 17638 阅读 · 2 评论 -
比较fromCharCode、charCodeAt、charAt、fromCodePoint、codePointAt
如果非要给这几种方法划清一下界限,fromCharCode(),charCodeAt(),charAt()是ES5中的字符串方法,其中fromCharCode()用于String对象,charCodeAt(),charAt()用于字符串的实例方法;fromCodePoint(),codePointAt()是ES6新增的特性,fromCodePoint()用于String对象,codePoi...原创 2018-05-03 23:06:26 · 1694 阅读 · 0 评论 -
setTimeout()中容易忽视的要点
setTimeout语法:var timeoutId = scope.setTimeout(function[, delay, param1, param2....]); var timeoutId = scope.setTimeout(function[, delay]); var timeoutId = scope.setTimeout(code[, delay]);setTi...原创 2018-05-28 22:39:57 · 9083 阅读 · 2 评论 -
ES6参数默认值的单独作用域
1.单独的作用域var val = 1const fun = (val, y=()=&gt;val=2 ) =&gt; { var val = 3 y() console.log(val) //预期是2,结果是3}fun();console.log(val) //1上面代码中,首先看内部val的打印结果:3。原因是一旦设置了参...原创 2018-08-30 21:59:20 · 435 阅读 · 0 评论 -
字符串的扩展includes(), startsWith(), endsWith()
以下内容全部来源于自阮老师的《ECMAScript 6 入门》,http://es6.ruanyifeng.com/#docs/string#includes-startsWith-endsWith。仅供个人记录学习。传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法。includes():返回布尔值,表示是否找...转载 2018-08-27 23:16:17 · 890 阅读 · 0 评论 -
ES5实现Object.is()
ES5中的==和===存在着问题,==会自动转换数据类型;===情况下NaN不等于NaN,+0等于-0NaN === NaN //false+0 === -0 //trueES6中的Object.is() 判断两个值是否相同。即只要两个值是一样的,它们就应该相等。Object.is(NaN, NaN) //trueObject.is(+0, -0)...原创 2018-09-11 21:10:36 · 1069 阅读 · 0 评论 -
Object.assign()扩展-实现原型链拷贝
Object.assign()的基本语法:将源对象(source)的所有可枚举属性的实例属性复制到目标对象(target)。Object.assign( target, source1, source2, ... )所以,Object.assign()复制的属性是有限制的:只复制源对象的自身实例属性,不复制原型属性(继承属性);只复制可枚举属性(enumerable:true)...原创 2018-09-12 00:03:09 · 1338 阅读 · 0 评论 -
JS类数组转数组方法汇总
一.什么是类数组拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)不具有数组所具有的方法经常遇到的类数组:DOM 操作返回的 NodeList 集合、函数内部的 arguments 对象。。。二.类数组转数组假设类数组对象为arrayLikeObject。1.for遍历声明一个空数组,通过遍历伪数组...原创 2018-09-06 17:41:36 · 1103 阅读 · 1 评论 -
Javascript属性枚举的5个方法比较
1.for-infor-in遍历所有能通过对象访问的,可枚举的属性,包括实例属性和原型属性,引伸为defineProperty的[[Enumerable]]属性.ES5中将constructor和prototype属性的[[Enumerable]]设为false,即不可枚举,但不适用于所有浏览器。function Person(){}Person.prototype.name = ...原创 2018-05-10 22:41:58 · 1574 阅读 · 0 评论 -
Object.create()实现原型式继承
我们可以从最初的混合继承模式,慢慢说起Object.create()的前因后果。一般来说,使用构造函数结合原型的混合模式,可以为特定的实例共享属性和方法。比较常见的是下面的形式,也是最基本的使用:function Person(name){ this.name = name;};Person.prototype.sayName = function(){ aler...原创 2018-05-16 23:28:59 · 2826 阅读 · 0 评论