摘要:
前言: 检测对象是否具有某个属性分为两种情况. 1. 如果要检测从原型链上继承的属性, 则使用: in 关键字; 2. 如果不检测继承的属性, 则使用: Object.hasOwnProperty() 方法; 第一步: 使用 in 关键字 第二步: 使用 Object.prototype.hasOw 阅读全文
2019年10月9日
摘要:
使用 delete 关键字, 可以删除对象的属性或方法. 由上可知, 使用delete可以删除对象的属性或方法, 删除成功会返回 true, 对不存在的属性进行引用时会返回 undefined, 对不存在的方法进行调用时会报错. 阅读全文
2019年10月8日
摘要:
答: 因为不使用var声明的变量不会被预解析, 如下: 阅读全文
摘要:
JS的预解析包括两部分: 1. 变量提升 2. 函数声明 对于变量提升, 可以看下下面这块代码 对于函数声明, 可以看下下面这块代码 由上面的执行结果, 我们可以知道JS的预解析对变量和函数的行为是不一样的, 对于变量来说, 预解析阶段是不会赋值的, 也就是说: 预解析之于变量, 实际上是在内存中开 阅读全文
摘要:
前言: 理解了作用域链, 就理解了为什么函数作用域可以引用全局作用域下声明的变量, 反正则不行. 第一步: 理解下面这段代码 第二步: 理解下面这段代码 第三步: 理解下面这段代码 第四步: 理解下面这段代码 第五步: 理解下面这段代码 通过上面的代码我们构建了三个作用域: 1. 全局作用域: wi 阅读全文
摘要:
下面这段代码在执行的时候, 打印的结果是1, Error: undefined; 原因是这个函数在执行的时候, 是先执行的: y = 1; 因为这里的y在声明赋值时没有使用var, 因此会默认成为全局变量, 然后将一个全局变量的值赋值给一个局部变量x; 其实际的执行过程如下: 阅读全文
摘要:
前言: 全局作用域下声明的变量再其他作用域下也可以使用, 但函数作用域下声明的变量, 无法在全局作用域下使用. 注意: ES5 中没有块级作用域, 因此在全局作用域下的if 或 for 或 {} 中声明的变量都是全局变量, 如果if 或 for 或 {} 在函数作用域中, 则在其内部声明的变量可以在 阅读全文
摘要:
前言: undefined表示 "未定义", null 表示 "空" 第一步: 一般在变量或属性没有声明或者声明以后没有赋值时, 这个变量的值就是undefined; 第二步: null是检测变量指向的内存地址是否存在, 即: 如果变量不指向任何一个内存地址, 则返回null. 注意: null 和 阅读全文
摘要:
前言: 判断基本类型用: typeof, 判断引用类型用: instanceof 注意: 1. typeof可以当关键字使用, 也可以当函数使用, 它可以检测基本类型, 但无法检测引用类型. 2. instanceof 只能作关键字使用, 可以检测引用类型, 不能检测基本类型. 第一步: typeo 阅读全文
摘要:
前言: 基本类型(数值 / 字符串 / 布尔值)和引用类型(对象)作为参数传递给函数时的行为是不一样的. 基本类型传递的是值的地址, 它在函数内部的改变不会影响到原变量. 引用类型传递的是引用的地址, 它在函数内部的改变实际上是对原变量的改变. 第一步: 下面演示基本类型的值做实参时的情况 注意: 阅读全文
2019年9月28日
摘要:
第一步: 打开微信公众号, 随便找一篇公众号文章, 将它发送给你的某个好友. 第二步: 使用默认浏览器打开这个分享的文章链接, 然后复制链接里面的biz字段到下面这个URL中替换 第三步: 在html中将构建好的这个url 第四步: 在手机/PC微信和PC浏览器中预览测试 1. PC微信 2. 手机 阅读全文
2019年9月27日
摘要:
启动: 直接使用命令: nginx 关闭1: 快速停止 关闭2: 完整有序停止 重启: 如下 阅读全文
摘要:
方法: 使用 nginx -t 命令 如果一切正常, 则会显示: 阅读全文
摘要:
方法: 使用: find 命令. 比如我想搜索 nginx.conf 文件所在的位置, 只需要这样写: 注意: 1. "/" 表示从根目录开始搜索; 2. "-name" 表示后面跟的是目标文件的文件名; 3. 搜索返回的值是文件所在的路径 阅读全文
摘要:
使用 groupadd 命令创建用户组: www 使用 useradd 命令添加用户到指定分组 阅读全文
摘要:
方法一: 使用 nginx -v 方法二: 使用 nginx -V 注意: nginx -V 显示的是: 版本号 / 编译器版本 / 配置参数 阅读全文
2019年9月26日
摘要:
Python 的 Hello, World! 应该是所有语言里面最简单的: 阅读全文
2019年9月25日
摘要:
前言: 数值 / 字符串 / 布尔值 是基本类型, 对象 / 数组 / 函数是引用类型 ES5中有6种数据类型, 分别为: number / string / boolean / null / undefined / object. 这里的对象是广义的对象, 还可以细分为: array / func 阅读全文
摘要:
前言: JavaScript中一切皆对象 当我们给下面的数值 / 字符串 / 布尔值类型的变量增加属性, 会发现我们的设置不会生效, 这是什么原因呢? 这就要讲到 "包装对象" 了; 在JavaScript中, 数值 / 字符串 / 布尔值都是基本类型, 而基本类型的值是不可变的, 但这又违背了Ja 阅读全文
摘要:
前言: 既然是规则了, 那就是约定俗成的, 不用过多纠结, 虽然这些规则里面也有必然的因素, 但现阶段来说可以不作探讨. 变量的命名需要: 遵守命名规则, 遵循命名规范, 这两点是不一样的, 规则是不能被打破的, 否则就运行不起来, 规范是一种实践经验, 不是必须要遵循的. 第一步: 变量的命名规则 阅读全文
摘要:
前言: 变量变量, 也就是会变的量. 它是一个装数据的容器, 里面的数据是可以变的, 因此叫变量. 比如 "班长" 就是一个变量, 这学期可能是李雷, 那下学期就可能是韩梅梅了, 老师想安排同学任务, 想到的是班长, 而非某个具体的同学, 就像下面的 " a ", 我们让他加1, 但具体这个a的值是 阅读全文
2019年9月24日
摘要:
第一步: 打开浏览器, 按 F12 键或 Ctrl + Shift + J. 注意: 1. 打开的这个界面是浏览器的开发者工具界面. 2. 顶部有许多Tab栏, 如: Elements / Console / Source等, 其中Console是用的最多的, 可以在光标处写代码. 第二步: 输入以 阅读全文
摘要:
第一步: 前往 GitHub 下载 Vue Devtools 项目文件 https://github.com/vuejs/vue-devtools 注意: 1. 将分支切换为 master 2. 下载.zip压缩包后在本地解压 第二步: 进入解压后的文件夹, 打开powershell, 执行下面两条 阅读全文
摘要:
使用: mysql -u root -p 进入 mysql 命令号以后, 如果想退出, 可以使用: quit 命令, 如下: 阅读全文
摘要:
1. 在命令行中直接查看版本号 2. 在 mysql --help 中查找与版本相关的信息 3. 在mysql命令行里面查看版本信息 4. 在mysql命令号里面查看status中的版本信息 阅读全文
摘要:
Q: 怎样查看Redis版本 A: 下面两条命令都可以查看redis 版本: 阅读全文
2019年9月23日
摘要:
需要使用 npm 或 cnpm, 比如: 注意: 执行该命令的地方位于工程项目的根目录; 阅读全文
摘要:
ctx.setLineDash() 方法设置虚线的线段与间隔的数值, 比如: ctx.setLineDash([20, 5]) 表示线段长度为20px, 间隔为5px; ctx.lineDashOffset 属性设置起始的偏移量. 阅读全文
摘要:
需要使用: ctx.lineJoin 属性; 顾名思意是 "线段连接" 的意思. 它的属性值有下面三个: 1. round: 圆角连接 2. bevel: 矩形拐角连接 3. miter: 折线连接(默认) 阅读全文
摘要:
需要使用: ctx.lineCap 属性. 直译过来就是 "线条的帽子". 它有三个属性值: 1. butt: 末端为方形 2. round: 末端为原形 3. square: 末端为方形, 但会多出一个宽度相同, 高度为宽度一半的方形延伸. 下面是实际演示: 阅读全文
摘要:
需要使用: ctx.lineWidth 属性; 它默认为1.0, 不能是负数. 阅读全文
摘要:
需要使用: ctx.fillStyle(). 注意: 1. 如果当前Path没有闭合, 则 ctx.fill() 会先闭合再填充; 2. 案例中使用了四次ctx.beginPath(), 说明这个图形下了四笔. 阅读全文
摘要:
需要使用: ctx.strokeStyle 注意: 1. 每次执行 ctx.beginPath() 都相当于是画画时的"落笔"这个动作, 必须要给它指定一个落笔的位置点; 2. ctx.strokeStyle 作用的是当前路径, 也就是最近的一次执行ctx.beginPath()之后绘制的路径; 阅读全文
摘要:
需要使用: ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) 阅读全文
摘要:
需要使用: quadraticCurveTo(cp1x, cp1y, x, y); cp1x: 控制点x坐标 cp1y: 控制点y坐标 x: 结束点x坐标 y: 结束点y坐标 注意: 贝塞尔曲线的两个定位点在两条直线上的速度是一样的. 阅读全文
摘要:
需要使用ctx.arcTo(), 参数是两个控制点的坐标, 比如下面的例子: 注意: 1. ctx.arcTo() 可以绘制与两条直线相切的圆弧; 2. ctx.rect() 可以绘制闭合的矩形; 阅读全文
摘要:
角度转弧度是按这个公式来的: ( π / 180 ) * 角度数. 在JavaScript中可以这样写: 阅读全文
摘要:
比如一个三角形边框, 如果想要填充其内部, 则需要使用: ctx.fill() 注意: 如果路径没有闭合, 那ctx.fill()会先闭合再填充. 阅读全文
摘要:
三角形是由三条直线组成的, 但我们只需要ctx.lineTo()两次, 因为, ctx.closePath()会就路径的起始点连起来. 如下所示: 阅读全文