- 博客(16)
- 收藏
- 关注
原创 JavaScript精确判断数据类型的方法
// 就这几行就完了 function getType(a) { var type = typeof a if(type != 'object') return type return Object.prototype.toString.call(a).slice(7, -1) } console.log(getType(1)) // number console.log(getType([1, 2])) // Array 首先,先用typeof判断基础类型,
2020-05-25 14:24:45 396
原创 new一个对象的过程以及new的实现
new 一个函数, 都会发生什么? 创建一个新的空对象 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) 执行构造函数中的代码(为这个新对象添加属性) 如果这个函数有返回值, 则返回; 否则默认返回新对象 new的实现 由于无法模拟 JavaScript 的关键字, 我们创建一个 myNew 函数来模拟。 在这个函数中, 第一个参数是构造函数,第二个参数开始, 是构造函数中...
2019-10-08 23:03:45 1838
原创 单例模式的理解及使用JavaScript实现
单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必...
2019-09-01 22:56:42 261
转载 v-for中的:key到底有什么用
其实不只是vue,react中在执行列表渲染时也会要求给每个组件添加上key这个属性。 要解释key的作用,不得不先介绍一下虚拟DOM的Diff算法了。 我们知道,vue和react都实现了一套虚拟DOM,使我们可以不直接操作DOM元素,只操作数据便可以重新渲染页面。而隐藏在背后的原理便是其高效的Diff算法。 vue和react的虚拟DOM的Diff算法大致相同,其核心是基于两个简单的假设: 1...
2019-08-31 22:15:56 1804 2
转载 关于JavaScript中闭包的理解
转载连接: https://blog.csdn.net/dovlie/article/details/76339244 闭包是js的一个难点也是它的一个特色,是我们必须掌握的js高级特性,那么什么是闭包呢?它又有什么用呢? 我们都知道,js的作用域分两种,全局作用域和局部作用域,基于我们所熟悉的作用域链相关知识,我们知道在js作用域环境中访问变量的权利是由内向外的,内部作用域可以获得当前作用域下...
2019-08-31 21:03:13 163
转载 Vue不兼容IE8的原因以及Object.defineProperty详解
本文转载自 https://www.cnblogs.com/zhangrunhao/p/7660931.html 原因概述: Vue.js使用了IE8不能模拟的ECMAScript5特性. Vue.js支持所有兼容ES5的浏览器。 Vue将遍历此对象所有的属性, 并使用Object.defineProperty把这些属性全部转为getter/setter。 Object.defindPrope...
2019-07-24 22:36:22 2821
原创 CSS三大特性——层叠、继承、优先级以及权重的计算
CSS 三大特性 层叠 继承 优先级 是我们学习 CSS 必须掌握的三个特性。 CSS层叠性 所谓层叠性是指多种CSS样式的叠加。 是浏览器处理冲突的一个能力,如果一个属性通过两个选择器设置到同一个元素上,那么这个时候一个属性就会将另一个属性层叠掉。 比如先给某个标签指定了内部文字颜色为红色,接着又指定了颜色为蓝色,此时出现一个标签指定了相同样式不同值的情况,这就是样式冲突。 一般情况下,如果...
2019-07-22 16:07:14 1008
原创 JavaScript 中的递增(++)和递减(--)操作符
递增和递减操作符 递增和递减操作符借鉴于 C 语言,而且各有两个版本:前置型和后置型。顾名思义,前置型应该位于要操作的变量之前,而后置型则应该位于要操作的变量之后。 前置型: 例如: var age = 22; ++age; 在这个例子中,前置递增操作符把 age 的值变成了 23(为 22 加上了 1)。实际上,执行这个前置递增操作与执行以下操作的效果相同: var age = 22; a...
2019-07-17 23:36:02 845 2
原创 JavaScript 中 undefined 与 null 的异同点
Undefined 类型 Undefined 类型只有一个值,即 undefined,表示一个已声明但未初始化值的变量。 在使用 var 声明变量但未对其初始化时,这个变量的值就是 undefined,例如: var message; alert(message == underfined); //true 包含 undefined 的变量和尚未定义的变量不一样,例如: var name; //...
2019-07-15 23:33:54 198
原创 vue 中 computed、methods 和 watch 属性的使用和对比
computed、methods 和 watch 属性的使用 下面使用一个姓名拼接案例来演示用法 1.methods <div id="app"> {{ fullname() }} </div> <script> var app = new Vue({ el: '#app', data: { firstName: 'Yudong', ...
2019-07-15 21:45:36 206
转载 HTTP 协议详解
HTTP 协议详解 HTTP协议简介 HTTP (HyperText Transfer Protocol - 超文本传输协议) 是应用层上的一种 客户端 / 服务端(C / S)模型的通信协议,它由请求和相应构成,且是无状态的。(暂不介绍 HTTP2) 协议 协议规定了通信双方必须遵循的数据传输格式,这样通信按照双方约定的格式才能准确的通信 无状态 无状态是指两次连接通信之间是没有任何关系的,每...
2019-07-11 16:35:10 159
原创 Vue实例的生命周期
什么是生命周期:从Vue实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期。 生命周期钩子:就是生命周期事件的别名而已。 生命周期钩子 = 生命周期函数 = 生命周期事件 主要的生命周期函数分类: 创建期间的生命周期函数: beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好 data 和 methods 属性 created:实例已经在内...
2019-06-12 17:22:30 134
原创 vue 自定义指令
使用 Vue.directive()定义全局的指令 参数一:指令的名称。在定义的时候,指令名称前面不需要加 v- 前缀,调用时候必须添加 参数二:是一个对象,在这个对象身上有一些指令相关的函数,这些函数可以在特定的阶段执行相关的操作 代码语法 Vue.directive('指令名',{ bind:function(){}, inserted:function(...
2019-06-12 17:06:08 123
原创 npm自定义包的规范及package.json字段解析
自定义包 包的规范 package.json 必须在包的顶层目录下 二进制文件应该在 bin 目录下 JavaScript 代码应该在lib目录下 文档应该在 doc 目录下 单元测试应该在 test 目录下 package.json 字段分析 name:包的名称,必须是唯一的,由小写英文字母、数字和下划线组成,不能包含空格 description:包的简要说明 version:符合语义...
2019-06-06 23:07:22 1811
原创 npm与yarn常用命令
本文列举npm与yarn的常用命令 1.初始化包 npm init //npm下同 yarn init //yarn下同 2.安装包(xxx代表包名) npm install xxx --save yarn add xxx 3.移除包 npm uninstall xxx yarn remove xxx 4.更新包 npm updata xxx y...
2019-06-04 20:37:19 1133
原创 JavaScript 事件
javaScript 事件 JavaScript 使我们有能力创建动态页面。事件是可以被 JavaScript 侦测到的行为。 网页中的每个元素都可以产生某些可以触发 JavaScript 函数的事件。比方说,我们可以在用户点击某按钮时产生一个 onClick 事件来触发某个函数。事件在 HTML 页面中定义。 一、设置事件 DOM对象.事件类型 = 时间处理程序 二、事件类型 1.鼠标事件...
2019-05-08 17:55:54 189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人