JavaScript
0斌果0
怀着破碎的花瓶,朝着光的方向不断前进!
展开
-
vue源码解析之实例挂载
vm.$mount([elementOrSelector])用法:如果vus.js实例在实例化时没有收到el选项,则它处于“未挂载”状态,没有关联的DOM元素。我们可以使用vm.$mount手动挂载一个未挂载的实例。如果没有提供elementOrSelector参数,模板将被渲染为文档之外的元素,并且必须使用原生DOM的API把它插入文档中。这个方法返回实例自身,因而可以链式调用其他实例方法。注:在使用vue-cli搭建vue项目的时候,其已经帮我们挂载好了,可能很少会接触到这个方法。但我们仍需要了解其原创 2020-08-09 00:11:35 · 386 阅读 · 0 评论 -
VUE源码解析之变化侦测(三)
在之前的两篇博客已经写了vue的变化侦测实现原理。大致回顾下,主要VUE实现变化侦测主要是:开始通过Observer类遍历每个属性,然后通过Object.defineProperty对属性进行数据劫持,每当其触发getter的时候通过依赖收集器(Dep)来收集依赖(Watcher)。当侦听属性发生变化的时候,会触发setter进而触发遍历Dep里面的依赖Watcher,然后Watcher会通知其他地方做相应的操作。Array则是通过拦截器来进行相应的侦听,原理也是差不多,不同的只是Dep收集的位置和侦听数原创 2020-06-07 01:29:07 · 167 阅读 · 0 评论 -
原生JS实现call和apply
call先来看官方解释:call()方法调用一个函数,其具有一个指定的this值和分别地提供的参数(参数的列表)。也就是说使用call方法,你可以指定被调用函数的this值,并且给他传参数。接下来我们自己实现一个call方法。1、模拟如何指定this的值先来看一段代码function func() {console.log(this.value)}var obj = {val...转载 2020-01-08 20:33:15 · 168 阅读 · 0 评论 -
JavaScript之this作用域
this的作用域1.箭头函数2.立即执行函数3.对象中的this4.全局作用域中的this5.定时器中的this6.绑定事件中的this7.构造函数中dethis8.改变this的指向原创 2019-11-27 20:27:06 · 471 阅读 · 0 评论 -
Javascript模块化编程require.js
AMD、CMD、CommonJS的异同前言先说下其三则的区别吧!AMD,CMD,CommonJS都是用于处理模块间依赖关系的规范CommonJSNodeJS就采用了CommonJS;因为其实采用同步加载模块,所以其比较使用使用在服务器端,因为在服务器读取模块都是在本地磁盘,加载速度很快。但是如果在客户端,加载模块的时候有可能出现“假死”状况。AMDrequire.js就是使用AMD规范...原创 2019-11-18 22:51:54 · 107 阅读 · 0 评论 -
JS中为何会有闭包?
所谓闭包?当我们聊起闭包的时候,大多数只是聊下闭包的表象:闭包是可以访问外部函数中的内部变量的函数。 闭包是怎样产生的?我们从一个函数进入到内存讲起,一步一步分析闭包产生的原因!1.首先在函数进入到内存的时候,会在内存中创建一个执行环境栈2.接着在执行环境栈中会有一个全局对象既window和一个活动对象。3.在活动对象中会自动添加一个arguments(函数的参数)以及函数...原创 2019-10-09 15:27:42 · 433 阅读 · 0 评论 -
JavaScript之defer、async
在我之前用<script>标签的时候我一直习惯将其放在body的底部,以防止阻塞页面的解析。js语言精髓就是这样建议我们的。但是在百度随便打开控制台的时候看到的并非如此!由图上可以看出,大多数网页的头部都放了好几个js,这时是不是很好奇!没关系如果你是认真看了红宝书的那我想你应该知道这时为什么。好吧我们直入主题,直接聊一下<script>这个标签吧! &...原创 2019-09-02 13:04:29 · 191 阅读 · 0 评论 -
JavaScript之继承的六种方式
一、原型链继承将父类的实例作为子类的原型,他的特点是实例是子类的实例也是父类的实例,父类新增的原型方法/属性,子类都能够访问,并且原型链继承简单易于实现,缺点是来自原型对象的所有属性都被继承的实例共享,无法实现多继承,无法向父类构造函数传递。...原创 2019-08-08 14:34:39 · 185 阅读 · 0 评论 -
JavaScript之prototype、__proto__、constructor
最近看了下博客,觉得这篇文章对原型链讲的很细了,写得也很不错很用心。因为最近准备秋招,时间太紧就不自己写了,觉得这篇文章讲的够清楚了,分享出来给大家一起学习。本文转自:https://blog.csdn.net/cc18868876837/article/details/812117291. 前言作为一名前端工程师,必须搞懂JS中的prototype、__proto__与constructo...转载 2019-08-08 11:11:55 · 151 阅读 · 2 评论 -
JavaScript垃圾回收机制和内存泄漏
从输入URL加载起看方向从输入 URL 到页面加载完成的过程:首先做 DNS 查询,如果这一步做了智能 DNS 解析的话,会提供访问速度最快的 IP 地址回来接下来是 TCP 握手,应用层会下发数据给传输层,这里 TCP 协议会指明两端的端口号,然后下发给网络层。网络层中的 IP 协议会确定 IP 地址,并且指示了数据传输中如何跳转路由器。然后包会再被封装到数据链路层的数据帧结构中,最后就是...原创 2019-07-31 23:44:54 · 192 阅读 · 0 评论 -
JavaScript之函数柯里化
什么是函数柯里化函数柯里化其实把一个带有多个参数的函数转换成一系列的嵌套函数。其一层一层地返回一个只传一个参数的新函数,直到所有参数都被使用。我们看一个例子function multiply(a, b, c) { return a * b * c;}multiply(1,2,3); //6其接受三个参数,再来看一个柯里化版本function(a){ ...原创 2019-07-22 22:02:20 · 153 阅读 · 0 评论 -
js中for、for in、foreach、for of和$.each、$().each的区别
在es5中有3种遍历的方式,分别为for、for in 、 foreach。一、for这算是js中最常用的遍历方式。let arr = [1,2,3,4,5];for(let i = 0;i<arr.length;i++){ console.log(i); //1 2 3 4 5}for中最好将len先读取出来,如果按上面的写法,每次循环都会读取一次数组的长度,可以做...原创 2019-07-31 13:34:25 · 212 阅读 · 0 评论 -
JavaScript之惰性载入函数
惰性载入函数,其实就是帮助我们减少重复执行一些处理不同分支的逻辑语句,提升函数处理速度。通常我们为了处理浏览器之间的差异,我们通常会定义一系列判断语句。例如,下面这段代码function createXHR(){ if(typeof XMLHttpRequest != "undefined"){ return new XMLHttpRequest(); }else...原创 2019-07-16 23:33:12 · 121 阅读 · 0 评论 -
JavaScript之EventUtil
EventUtil是为了平衡不同浏览器间实现事件的差异或事件方法的差异而存在的以下EventUtil对象代码亲测可用,并包含详细注释[点击该对象中每一个方法名(绿色字体)可直接跳转到本文中介绍该方法的部分]var EventUtil={addHandler:function(element,type,handler){ //添加事件if(element.addEventListener)...转载 2019-07-15 00:11:21 · 179 阅读 · 0 评论