![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Javascript
文章平均质量分 57
那等雨停吧
愿你有梦可依,有树可栖。
展开
-
React源码16.12.x --- Component 与 PureComponent
如何区分纯组件React PureComponent 源码解析Component & PureComponent这两个类基本相同,唯一的区别是PureComponent的原型上多了一个标识。这是检查组件是否需要更新的一个判断,ctor就是你声明的继承自Component or PureComponent的类,他会判断你是否继承自PureComponent,如果是的话就shallow...原创 2020-03-14 22:12:30 · 394 阅读 · 1 评论 -
前端值得一探究竟特辑 --- 原型和原型链
【函数】:普通函数,类(所有的类:内置类,自己创建的类)【对象】:普通对象,数组,正则,arguments…实例是对象类型的(除了基本类型的字面量创建的值),prototype的值也是对象类型的,函数也是对象类型的。原型和原型链讲解:原型:一种管理机制所有的函数都有一个prototype属性(这也叫显式原型,它也是一个普通的对象),浏览器默认为它开启一个堆内存。浏览器默认为它开启一个的...原创 2020-02-06 20:19:23 · 354 阅读 · 0 评论 -
前端值得一探究竟特辑 ---普通函数运行与构造函数运行(new背后的故事)
普通函数执行复习下普通函数执行发生了什么:开辟一个栈内存,形成私有作用域。形参赋值。变量提升。代码执行。栈内存释放。构造函数执行当我们用new运算符new一个构造函数产生一个实例时,比如说: var obj = new Func 时,其背后的步骤是这样的:像普通函数一样开辟栈内存,形成一个私有作用域。形参赋值,变量提升。都是私有变量。【构造函数执行独有的默认运行机制】,...原创 2020-02-05 18:57:05 · 222 阅读 · 0 评论 -
前端值得一探究竟特辑 --- 快速掌握bind、call、apply的区别
call 和 apply 的主要作用,是改变对象的执行上下文,并且是立即执行的。bind 也能改变对象的执行上下文,它与 call 和 apply 不同的是,返回值是一个函数,并且需要稍后再调用一下,才会执行。下面进行详细解释:call和apply的共同点call和apply都能够改变函数执行时的上下文,将一个对象的方法交给另一个对象来执行,并且是立即执行的。调用 call 和 app...原创 2020-02-05 17:48:50 · 283 阅读 · 0 评论 -
前端值得一探究竟特辑 --- 原始值和引用值类型及数据类型的判别
1. 原始值和引用值类型及区别原始类型 保存为简单数据值。引用类型 保存为对象,其本质是指向内存位置的引用。2. 数据类型的判别1. typeof:基本类型使用typeof判定数据类型,只能区分基本类型。(number, string, boolean, undefined, null, symbol),特注意typeof null => object, 可以理解为null是一个指...原创 2020-01-17 14:10:20 · 276 阅读 · 0 评论 -
前端值得一探究竟特辑 --- 防抖与节流
防抖防抖函数的作用就是控制函数在一定时间内的执行次数。防抖意味着N秒内函数只会被执行一次,如果N秒内再次被触发,则重新计算延迟时间。以乘车刷卡的情景举例,只要乘客不断地在刷卡,司机师傅就不能开车,乘客刷卡完毕之后,司机会等待几分钟,确定乘客坐稳再开车。如果司机在最后等待的时间内又有新的乘客上车,那么司机等乘客刷卡完毕之后,还要再等待一会,等待所有乘客坐稳再开车。防抖函数分为非立即执行版和立即...原创 2020-01-16 15:55:08 · 495 阅读 · 0 评论 -
前端值得一探究竟特辑 ---深拷贝与浅拷贝
1、什么是深拷贝和浅拷贝浅度拷贝:复制一层对象的属性,并不包括对象里面的为引用类型(Object, Array )的数据,当改变拷贝的对象里面的引用类型时,源对象也会改变。深度拷贝:重新开辟一个内存空间,需要递归拷贝对象里的引用,直到子属性都为基本类型。两个对象对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性。2、手撕深度拷贝 function deepClone(s...原创 2020-01-14 14:57:39 · 370 阅读 · 0 评论 -
Javascript深度复制对象
首先我们来虚构一个复制的对象,其属性包括一个对象,一个数组,一个对象方法,一个原型方法及一个原型属性。 function Child(){ this.name="Liz"; this.favorite=['sleep','delicacy','study']; this.friends={ ctt:{ name:'Ctt',原创 2016-06-15 17:02:35 · 614 阅读 · 0 评论 -
Javascript异常捕获
很久没写blog了,一直在积累知识,其实也就是看看vue,react的官方api,瞅着别人的demo,自己临摹点小demo。一直没有勇气也没有精力给自己一个构建blog的勇气。总是不自信,其实也不见得是不自信,前端技术如今广度越来越广,深度越来越深。没个扎实的基础你能张口说你会前端?你敢拍着胸脯说你精通javascript? 反正我不敢,知识积累没达到一定境界,问必能答,我都不敢。是的,对于技术,原创 2016-07-19 14:09:59 · 469 阅读 · 0 评论 -
jQuery Ajax 设置请求头
在项目中采用token来验证用户登录,运作机制大致如下用户首次登录成功时,server-end发送token到客户端,client-end存入cookie。用户做任何请求操作时,在ajax的headers里带上token,用以server-end做登录状态验证。这时问题就来了···请求: $.ajax({ type: type, timeout: 100原创 2017-04-20 13:09:09 · 83066 阅读 · 0 评论 -
Javascript比较两个数组是否相等(存在重复元素)
首先判断长度再排序转化为字符串做比较if (Arr1.length!=Arr2.length) { return true; }else{ if (Arr1.sort().toString()!= Arr2.sort().toString()) { return true; }; }原创 2017-04-24 10:21:57 · 1033 阅读 · 0 评论 -
Angular实战记录--主从组件数据传递
父组件向子组件传递数据子组件向父组件传递方法原创 2018-11-28 13:46:02 · 576 阅读 · 0 评论 -
Angular实战记录---HttpClient之URL过长
背景要保存的数据过大,以至于URL后面接了太长的参数,最终后台报500。检查了下,已然使用的是POST方式。秉承简单方便(tou jiangshua hua)的态度,就想在Angular自带的HttpClient上做文章。别说,人家Angular就是牛皮。直接上jsonp()HttpClient的Jesonp介绍构造一个 Observable,订阅它将经过拦截器管道处理之后发送一个特殊的...原创 2019-06-18 14:08:50 · 559 阅读 · 0 评论 -
简明Javascript的split、slice、splice方法
splitsplit() 方法用于把一个字符串分割成字符串数组。如果把字符串 “” 用作分割标志(不是空格 “ ”),那么 被分割字符串中的每个字符之间都会被分割。split() 方法不改变原始字符串。 var str="hello, my girl."; var arr=str.split(" ");splice(改变原数组,)只能处理数组 var str="0123456...原创 2019-06-18 19:20:22 · 450 阅读 · 0 评论 -
二分查找
什么是二分查找代码始终在维护着有序A数组的一个子序列[left, right],我们的target可能就在这个区间。我们不断的折半缩小子序列[left, right],从而找到target。关键步骤序列必须有序,这个就不提了,简单选择排序,冒泡排序,快速排序都是非常常见的处理方法。初始left = 0、right = length-1。在left < right的前提下。二分...原创 2019-09-28 15:47:00 · 257 阅读 · 0 评论 -
几种继承模式的比较
一、 默认模式function Parent(){ this.nameArr=["name0","name1","name2"]; } Parent.prototype.sayName = function() { console.log(this.nameArr); }; function Child1(){}; Child1原创 2016-06-15 16:03:50 · 895 阅读 · 0 评论 -
javascript函数作用域和嵌套调用关系
JavaScript 的作用域是通过函数来定义的,在一个函数中定义的变量只对这个函数内部可见,我们称为函数作用域。特别注意:JavaScript 的作用域完全是由函数来决定的, if 、 for 语句中的花括号不是独立的作用域。在函数中引用一个变时,JavaScript 会先搜索当前函数作用域,或者称为“局部作用域”,如果没有找到则搜索其上层作用域,一直到全局作用域。函数作用域的嵌套关系是定义时决定原创 2016-06-07 10:04:24 · 2159 阅读 · 0 评论 -
Javascript数据结构与算法---数组
Javascript中对数组的定义数组在javascript中只是一种特殊对象,javascript的对象属性名必须是字符串。 所以用来表示偏移量的索引在内部会被转换为字符串。创建数组[]操作符var Arr=[]; console.log(Arr.length);//0var Arr=[1,2,3,4,5]; console.log(Arr.length);//5调用Array构造函数原创 2016-04-07 13:27:26 · 4735 阅读 · 0 评论 -
《JS DOM编程艺术》读书笔记
JS对象和C,C++非常相似 何为DOM“D”即Document,文档。“O”即Object,user-defined object(用户自定义)、native object(内建对象,如Array、Math)、host object(浏览器提供)。“M”即Model 获取元素获取id方法 document.getElementById(id);获取name方法,查询元素的 name原创 2016-01-09 05:39:56 · 411 阅读 · 0 评论 -
《JS高级程序设计》读书笔记
复制变量值差别普通复制var num1 = 5;var num2 = num1;num1 = 6;console.log(num1);//6console.log(num2);//5 2. 引用复制var obj1 = new Object();var obj2 = obj1 ;obj1.name = 'Liz';console.log(obj2.name);//Liz原创 2016-01-13 17:21:36 · 485 阅读 · 0 评论 -
javascript----Array之Sort()
引入Sort()举个栗子 var arr=[1,3,98,23]; arr.sort(); console.log(arr);我期望得到的结果[1,3,23,98]; 阿西吧!说好的数值型呢? 童话里都是骗人的 MDN这样告诉我···········!!!!!!!!!!!!!! 呵呵,居然有这样变态的默认排序(曾经欺骗了多少和我一样无知单纯的孩纸原创 2016-04-02 13:44:51 · 1210 阅读 · 0 评论 -
JavaScript图的基本构建
引言利用图,可以对生活中很多系统进行建模。比如交通流量,顶点表示道路交叉点,边表示街道,边的权值可以表示限速信息等。通过一定算法可得到最优路线巴拉巴拉······除此外还有很多很多系统可以通过图来建模,只要你敢想,just do it. 代码不会骗人,结果就是证据。 对以下图进行构建,目前暂不考虑权。要发展,首先得有图啊啊啊啊················构建 var g= new Graph原创 2016-04-10 10:38:59 · 506 阅读 · 0 评论 -
match()方法与正则子表达式
利用match方法匹配16进制颜色,在经过parseInt转换为rgb值,在实现的过程中,进一步学习了match方法实验代码如下:console.log(toRGB("#0000FF"));function toRGB(color){var arrFromMatch=color.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/)原创 2016-04-15 21:19:07 · 1028 阅读 · 0 评论 -
跨浏览器处理事件
var EventUtil = { addHandler: function(element, type, handler) { if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.atta原创 2016-04-16 17:55:22 · 369 阅读 · 0 评论 -
动态创建Dom元素,并设置属性和类----JS&JQ
直接上的代码HTML代码<div class="pc-container"></div>JS代码var container = $('.pc-container');$('<img>').attr({ src:'images/star.png' }).css({ top:'50px', lef原创 2016-04-09 12:17:41 · 7443 阅读 · 0 评论 -
重识Javascript系列---ECMAScript内置对象
ECMAScript对象是很特殊且比较难理解是一部分,因为她确实太过”自由”,涵盖的内容也非常的多,比如上一篇(变量)提到的引用型变量都属于对象类型,包括函数在内··堪称···变态,认真脸。依旧不谈什么类,什么实例,什么特性,什么方法···内置对象Global &MathECMAScript中有三种对象可以直接创建并使用StringArrayDate(我还没有深入探索过,会基本的get···s原创 2016-04-17 20:41:00 · 690 阅读 · 0 评论 -
重识Javascript系列---ECMAScript继承
1 、工厂模式即用函数来封装以特定接口创建对象的细节function createPerson (name,age,sex) { var person = new Object(); person.name = name; person.age = age; person.sex = sex; person.sayName = function() {原创 2016-01-13 17:50:13 · 382 阅读 · 0 评论 -
重识Javascript系列---BOM
window对象他表示整个浏览器窗口,如果使用了框架集合,每个框架都有自己的window对象,存放在frames集合中。 window是整个BOM的中心,所以不需要明确引用。Timevar timer=setTimeout(fun,time)延迟多少时间后执行funclearTimeout(timer)var timer=setInterval(fun,time)每隔多少时间执行funcl原创 2016-04-18 09:10:38 · 475 阅读 · 0 评论 -
JavaScript arguments 对象
arguments 对象并不是一个真正的Array。它类似于数组,但没有数组所特有的属性和方法,除了 length。例如,它没有 pop 方法。不过可以将其转换成数组:var args = Array.prototype.slice.call(arguments); 不应在 arguments 对象上使用 slice 方法,这会阻碍 JavaScript 引擎的优化 (比如 V8 引擎)。作为原创 2016-05-03 09:30:14 · 344 阅读 · 0 评论 -
重识Javascript系列---ECMAScript变量
当你知道晚了的时候恰好是开始的最佳时期一年以来,我在JQuery这样Write Less,Do More的编程宠溺下变得越来越眼高手低。以至于在参加在线模拟的时候才发现,我原来并不会Javascript,只是会借助JQ去做Javascript做的事情。我只明白How to do,不知道Why to do by this way。 当然,作为一个积极向上的有志青年,How to do远远不能满足我对原创 2016-04-17 17:05:38 · 504 阅读 · 0 评论 -
利用闭包遍历元素绑定事件
在javascript开发过程中,经常会遇到闭包问题,特别是在为一组dom元素绑定事件的时候,容易遇到多个代码块嵌套不执行,this指向与预期不同的情况。情况一: 把需要绑定事件的dom元素放进数组,使用$.each()进行绑定。$.each(divSelects,function() { $(this).click(function() {···}原创 2016-05-03 10:28:00 · 1353 阅读 · 0 评论 -
《JS高级程序设计》——函数#闭包#
函数本身就是一个非常有用的工具,至少我经常使用函数来简化我的代码。 当然,函数还有更多值得学习的地方,在下知识浅薄,尚在探索学习。 在这里要重提 arguments.callee();它是所有函数具有的属性,代表函数本身,可在函数内部安全的调用函数本身,实现递归;function myFunc(num) { var s = ''; for (var i = 0; i < num;原创 2016-01-31 20:33:13 · 746 阅读 · 0 评论 -
$.fn.extend和$.extend的理解
引言项目也写了几个了,自己的jQuery插件也是来来回回优化了无数次,别人的轮子拿来用也是前前后后理解了无数次。比较之下,觉得自己的轮子貌似根本称不上是插件···顶多就一个全局方法··· 怪不得阿里面试的时候,那个13年前端生涯的大叔看到我的‘plug in’一脸嫌弃···“你这是插件?!” 【大写的尴尬】真是搞不懂,我是吃了多少熊心豹子胆,就这水平也敢去敲马云粑粑的门···· 言归正转,jQ原创 2016-05-29 20:40:42 · 572 阅读 · 0 评论 -
JSON格式
JSON 能做什么?JSON 是基于纯文本的数据格式,天生是为 JavaScript 准备的。 可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。 除了字符 “,\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他 Unicode 字符可以直接输出。 如下图["abc",12345,false原创 2016-05-20 17:52:52 · 452 阅读 · 0 评论 -
JS字符串操作函数
1 charCodeAt()方法和charAt()方法charCodeAt()方法返回的是位于指定位置的字符的编码。 语法:stringObject.charCodeAt(index) 注释:index是必需的参数,表示字符在字符串中的下标,注意字符串中第一个字符的下标是0,如果 index 是负数,或大于等于字符串的长度,则 charCodeAt() 返回 NaN。肯定的呀,都没有指定字原创 2015-03-20 15:16:39 · 716 阅读 · 0 评论