02 2021 档案
摘要:function fun( p1, p2, ) { console.log(p1, p2) } fun(1, 2) let obj = { first: "jane", last: "Doe", } console.log(obj) let arr = [ "a", "b", "c", ] cons
阅读全文
摘要:{ console.log("abc".padStart(10)) console.log("abc".padStart(10, "foo")) console.log("abc".padStart(6, "123465")) console.log("abc".padStart(8, "0"))
阅读全文
摘要:{ //对象属性遍历 let obj1 = { a: 1 } let obj2 = { b1: 2 } Object.defineProperty(obj2, "b2", { enumerable: false, value: 3 }) Object.setPrototypeOf(obj2, obj
阅读全文
摘要:{ let task1 = () => new Promise((resolve, reject) => { console.log("task1 begin") setTimeout(() => resolve("task1 end.返回结果"), 1000) }) let task2 = ()
阅读全文
摘要:{ // //异常处理。失败回调函数处理 // let task1 = () => Promise.reject("task1 error") // async function fun() { // return await task1() // } // fun().then( // res =
阅读全文
摘要:{ // let task1 = function () { // return new Promise(function (resovle, reject) { // setTimeout(function () { // resovle("task1的返回结果") // }, 1000) //
阅读全文
摘要:include: let arr1 = [1, 2, 3] console.log(arr1.includes(2)) console.log(arr1.includes(4)) console.log(arr1.includes(2,1)) console.log(arr1.includes(2,
阅读全文
摘要:index.html: <script src="../dist/bundle.js"></script> app.js: //引入模块 //使用解构的方式来获取模块中的暴露出内容 import { foo, bar } from "./modules/module1" import { MODUL
阅读全文
摘要:index.html: <script src="./script/libs/sea.js"></script> <script> seajs.use("./script/main") </script> main.js: define(function(require){ //模块引入 //let
阅读全文
摘要:index.html: <script src="./script/lib/require.js" data-main="./script/main.js"></script> main.js: (function () { require.config({ //模块名=>模块路劲映射 paths:
阅读全文
摘要://定义和暴露模块 module.exports = { foo() { console.log("module1 foo() is called") } } //定义和暴露模块 module.exports = function () { console.log("module2 function
阅读全文
摘要://super关键字 //1、作为函数调用,调用父类的构造函数. //ES6中要求,在字类构造函数中,必须执行一个super函数 //super指向父类的原型不是父类class class A { constructor(x) { this.x = x } } class B extends A {
阅读全文
摘要://父类 class Person { constructor(name, age) { this.name = name this.age = age } printInfo() { console.log(this.name) console.log(this.age) } } //字类 cla
阅读全文
摘要://静态属性是指定义在Class上本身的属性,而不是定义在实例对象上 class Person { //ES6明确规定 ,Class内部只能声明静态方法,不能有静态属性 //一个提案,在属性前加上static关键字,变成静态属性 //静态属性定义在类型上通过类型访问 //static country
阅读全文
摘要://在类型上定义的方法都在原型链上 // 在类中定义方法前加上static关键字,该方法就是静态方法 // 静态方法可以直接通过类来直接调用 class Foo { //实例方法,定义在实例对象的原型上 methodA() { console.log("methodA is called") } /
阅读全文
摘要://类的定义也可以使用表达式的形式定义 let MyClass = class Me { getClassName() { return Me.name } } let myclass = new MyClass() console.log(myclass.getClassName()) //err
阅读全文
摘要:class Person { constructor(name, age) { this.name = name this.age = age } //__age__ = 0 get age() { console.log("get is called") //return this.__age__
阅读全文
摘要://constructor方法 ,通过new命令生成实例对象时,会自动调用该方法 //通常我们在constructor方法进行一些数据的初始化 // class Person { // constructor(name, age) { // console.log("constructor is c
阅读全文
摘要:// function Person(name, age) { // this.name = name // this.age = age // } // Person.prototype.printInfo = function () { // console.log(this.name) //
阅读全文
摘要://秒杀商品剩余件数类似数据时效性要求高 //目前web即时消息通讯的解决方案:轮询、长轮询、websocket //案例:模拟客户端通过轮询方式向服务发送异步请求获取数据 let ajax = function* () { yield new Promise((resolve, reject) =
阅读全文
摘要://案例:使用Generator函数模拟抽奖的实现 function choujiang() { console.log("执行抽奖业务逻辑") } let myGenerator = function* () { //控制抽奖次数 let count = 3 while (count > 0) {
阅读全文
摘要:function* f() { for (let i = 0; true; i++) { //yield表达式本身是没有返回值,或者说是返回undefined let reset = yield i console.log("reset", reset) if (reset) { i = -1 }
阅读全文
摘要:var myIterator = {} //Generator函数就是一个遍历器对象的生成函数 myIterator[Symbol.iterator] = function* () { yield 1; yield 2; yield 3; } for (let v of myIterator) {
阅读全文
摘要://Generator函数是ES6提供的一种异步编程解决方案 //语法行为和传统异步编程完全不同 //形式上和普通函数类似。有两个特征 //1、function关键字后面有个星号 //2、函数体内使用yield表示,定义不同的内部状态 //Generator函数就是一个状态机,在内部封装了多个状态
阅读全文
摘要://对象上默认没有部署iterator接口 let obj1 = {} //如何将Iterator接口部署到目标对象上 //Symbol.iterator =>指向对象的默认遍历器方法 let obj2 = { data: ["hello", "world"], [Symbol.iterator]:
阅读全文
摘要://表示"集合"的数据结构:数组Array,对象Object,Map和Set //通过引入Iterator一种机制,为各种不同的数据结构提供统一的访问接口 //作用 //为各种数据结构的遍历,提供一个统一,简便的访问方式 //ES6创造了一种新的遍历命令For...of循环 let target =
阅读全文
摘要:let urlBig = "http://static.699pic.com/best_album/57_banner_____.jpg!/fh/410" let urlMid = "http://static.699pic.com/best_album/57.jpg" let urlSmall =
阅读全文
摘要://Promise是一个容器,保存某个异步的操作 //有三种状态,进行中、已成功、已失败 //resolve代表成功的回调函数;reject代表失败的回调函数 // let promise=new Promise(function(resolve,reject){ // //相关的异步操作 // /
阅读全文
摘要:// function loadImage(url){ // let image=new Image(); // image.src=url; // image.onload=function(){ // console.log("图片加载完成") // } // image.onerror=fun
阅读全文
摘要://观察者模式 //监听对象属性的修改,如果属性值发生变化,打印出对象的属性信息(to do somthing) let queuedObservers = new Set() //将需要处理的函数,添加到set结构中 let observe = fn => queuedObservers.add(
阅读全文
摘要://1.将Object对象的一些属于语言自身的方法,放到Reflect对象上。(代码重构) //Object.defineProperty() =>Reflect.defineProperty() //2、修改了某些Object方法的返回结果,让其变得更加合理 //Reflect.definePro
阅读全文
摘要://目标对象 let p = { name: "令狐狐冲", age: 18, __skill__: "独孤九剑" } //创建代理对象 let proxy = new Proxy(p, { //对姓名做屏蔽操作 令狐狐冲=>令**冲 //拦截对象属性的读取操作 get(target, key) {
阅读全文
摘要:{ let wm = new WeakMap(); let key = { foo: 1 } wm.set(key, 2) console.log(wm.get(key)) let k1 = [1, 2] let k2 = [3, 4] let wm2 = new WeakMap([[k1, "fo
阅读全文
摘要:首先set和map区别:set类似于数组,map类似于键值对 set和weakset:weakset是对象值数组 map和weakmap:weakmap的键可以是对象
阅读全文
摘要:WeakSet { //WeakSet和Set类似,也是不重复值得集合,与Set有两个区别 //1、WeakSet得成员只能是对象,而不能是其它数据类型得值 //2、WeakSet中的对象都是弱引用,垃圾回收机制不会考虑WeakSet对该对象的引用 let ws=new WeakSet() ws.a
阅读全文
摘要:set类似于数组,但是成员的值都是唯一的,没有重复 { let s=new Set() [2,3,4,4,2,5,1].forEach(x=>s.add(x)) for(let i of s){ console.log(i) } } { let s=new Set([1,2,2,3,1,4]) le
阅读全文
摘要:Symbol表示一个独一无二的值,防止对象属性名称的冲突 let s1=Symbol("foo") let s2=Symbol("bar") console.log(s1 s2) false let mySymbol=Symbol() let obj={} obj[mySymbol]="hello"
阅读全文
摘要:正则拓展 u修饰符的使用:在正则式中使用unicode匹配 y修饰符的使用:y修饰符和g修饰符相似,也是全局匹配,不同在于,g只要剩余位置中存在匹配即可,y修饰符确保匹配从剩余第一个位置开始 进制拓展 二进制表示方法(0b): console.log(0b11111) 八进制表示方法(0o): co
阅读全文
摘要:let regex=/xyz/i console.log(regex.exec("XYZabc")) let regex=new RegExp("xyz","i") console.log(regex.exec("XYZabc")) let regex=new RegExp(/xyz/i) cons
阅读全文
摘要:startsWith(str) endsWith(str) includes(str) repeat(num)
阅读全文
摘要:字符的unicode的表示 js中用两个字节表示一个字符 es6对超出\uFFFF范围的字符,进行了支持 console.log("\u{20BB7}") var s1="𠮷" var s2="中" console.log("𠮷 length",s1.length) console.log("中
阅读全文
摘要:当直接将用户输入的字符串变量解析到浏览器上时,会有模板注入风险 document.write(`<script>alert("")<\/script>`) 由标签模板进行字符串替换,避免模板注入 function safeHtml(data, v1) { console.log(arguments)
阅读全文
摘要:let和const 1.块级作用域 解决方法1: var a=[]; for(var i=0;i<10;i++){ (function(i){ a[i]=function(){ console.log(i) } })() } 解决方法2: var a = []; for (let i = 0; i
阅读全文
摘要:JSON var jsonstr=JSON.stringify(obj) var jsonObj=JSON.parse(str) Object对象的拓展defineProperty 这种添加属性默认是不能被修改的(需要设置writeable参数)不能被遍历(需要设置enumerable)不能被删除(
阅读全文
摘要:Strict Mode严格模式 1.不是用var声明的变量,在严格模式下不被通过 2.带有"eval"的操作都被禁止 <script> "use strict" 全局 globalVal=100; 会报错 var globalVal=100; 不会 var eval=100; console.log
阅读全文
摘要:使用原型链继承 定义父类型构造函数 给父类型的原型添加方法 定义子类型的构造函数 创建父类型的对象赋值给子类型的原型 将子类型原型的构造属性设置为子类型 给子类型原型添加方法 创建子类型的对象:可以调用父类型的方法 关键:子类型的原型为父类型的一个实例对象 function Person(name,
阅读全文
摘要:Object构造函数模式 先创建空Object对象,再动态添加属性/方法 适用场景:起始时不确定对象内部数据 问题:语句太多 var obj={} obj.name="tom" obj.age=23 对象字面量模式 使用创建对象,同时指定属性/方法 适用场景:起始时对象内部数据是确定的 问题:如果创
阅读全文
摘要:Object构造函数模式 先创建空Object对象,再动态添加属性/方法 适用场景:起始时不确定对象内部数据 问题:语句太多 var obj={} obj.name="tom" obj.age=23 对象字面量模式 使用创建对象,同时指定属性/方法 适用场景:起始时对象内部数据是确定的 问题:如果创
阅读全文
摘要:闭包 example var btns=document.getElementsByTagName("input") for(var i=0;i<btns.length;i++){ btns[i].click=function(){ alert(i) } } OUTPUT:这个时候会出现点击每个bt
阅读全文
摘要:<!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.o
阅读全文
摘要:虚方法、抽象类、接口区别:虚方法:父类可能需要实例化,父类方法需要方法体,可以找到一个父类 抽象类:抽象方法,父类不能实例化,且父类方法不能实现方法体,不可以找出一个父类,需要抽象 接口:多继承 length:是指所有维度的长度 count:是指一维的长度 字符串具有不可变性,虽然是引用类型,但分配
阅读全文
摘要:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace filestreamtest { class Program { stat
阅读全文
摘要:变量提升和函数提升 变量提升 var a=3; function fun(){ console.log(a) var a=5; /* *var a; console.log(a); a=5; */ } OUTPUT:undefined 函数提升 fun2() function fun2(){ con
阅读全文
摘要:原型(空的实例对象) 每个函数都有一个prototype属性,它默认指向一个object空对象(即称为原型对象) 原型对象中有一个属性constructor,它指向函数对象 给原型对象添加属性(一般都是方法) 作用:函数的所有实例对象自动拥有原型中的属性(方法) 显示原型和隐私原型 每个函数func
阅读全文
摘要:数据类型 数字 (Number),整数或浮点数,例如42或3.14159 字符串 (String) 布尔值 (Boolean) null (js大小写敏感,因此null和NULL不一样) undefined (变量被声明了,但是没有赋值时) Symbol (es6中新添加的类型,一种实例是唯一且不可
阅读全文
摘要:恢复内容开始 MongoDB 分布式文档存储数据库 1.简介 MonGoDB是为快速开发互联网web应用设计的数据库系统 MongoDB的设计目标是简洁、灵活、作为Web应用栈的一部分 MongoDB的数据模型是面向文档的,类似于JSON的结构 2.基本指令 show dbs or show dat
阅读全文
摘要:1.静态资源访问,需要设置路由和响应标头 2.url模块、path模块、querystring模块 Url { protocol: null, slashes: null, auth: null, host: null, port: null, hostname: null, hash: null,
阅读全文
摘要:M:模型 public class Student { private String rollNo; private String name; public String getRollNo() { return rollNo; } public void setRollNo(String roll
阅读全文
摘要:var express = require("express") var path = require("path") var app = express() app.use(function (req, res, next) { console.log("中间件1执行") next() }) //
阅读全文
摘要:1.node.js是一个构建在chrome V8引擎上的javascript运行环境 2.node.js特点:单线程、事件驱动、非阻塞IO模型、轻量 3.node.js是单线程的(多个请求都是一个线程在处理) 4.事件驱动是node.js底层机制,有一个事件环,保证node.js可以高效准确的运行而
阅读全文
摘要:###关于nginx.conf配置文件 ####问题: 403 Forbidden 原因:权限不够,或者启动nginx的不是当前用户 解决:(1) 将上线项目文件权限改为777 (2)将/etc/nginx/nginx.conf文件里面的use nginx;改为use root; 404 not f
阅读全文
摘要:###如果不打算用redux-thunk import { createStore, compose} from 'redux'; import reducer from './reducer' const composeEnhancers = window.__REDUX_DEVTOOLS_EXT
阅读全文
摘要:####diff算法主要是同级比较,生成数组,进行数组替换 ####reducer可以接收state,但是绝不能修改state ####纯函数指的是:给固定收入,就一定有固定的输出,而且不会有任何副作用【不能例如:new data(),对原有函数参数进行修改】 ###中间件是action和store
阅读全文
摘要:原本代码: import { SREACH_FOCUS, SREACH_BLUR } from "./actionType" export const searchFocus = () => { type: SREACH_FOCUS } export const search_blur = () =
阅读全文
摘要:原来 修改(不用在构造函数里面定义)
阅读全文
摘要:查看已经开放得的端口:firewall-cmd --list-all设置开放的端口sudo firewall-cmd --add-port=80/tcp --permanent查看防火墙是否开启systemctl status firewalld关闭防火墙sudo systemctl stop fi
阅读全文
摘要:1.把.bind(this)提升到constructor里面 2.在生命周期函数里面shouldComponentupdate里面做父组件改变重新渲染以致于子组件重新渲染的禁止 3.在setstate里面改变数据 4.key值
阅读全文
摘要:1.当父组件的render函数被运行的时候,它的子组件都将重新运行 2.当组件的state或者props发生改变的时候,render函数就会重新运行 3.围绕react衍生出来的思考: 1.声明式开发 2.可以和其它框架并存 3.组件化 4.单向数据流 5.视图层框架 6.函数式编程
阅读全文
摘要:###1.vscode保存react项目的时候由于js-css-html插件格式化代码导致react代码缩进错误 解决方法:禁用js-css-html插件 ###2.react和vue不同,react方法的定义需要加而不是"",否则报Expected onClick listener to be a
阅读全文

浙公网安备 33010602011771号