随笔分类 - javaScript
摘要:call var name = 'waq'; var obj = { name: 'goodLuck' } function sayName(){ console.log(this.name); } //1、改变this指向函数 Function.prototype.myCall = functio
阅读全文
摘要:前言 ECMAScript 为数组定义了 5 个迭代方法: 每个方法都会接收两个参数:运行的函数以及作为函数运行上下文的作用域对象。其中运行的函数接收 3 个参数:数组元素、元素索引和数组本身。这些方法都不改变调用它们的数组。 对比区别 在这些方法中, every() 和 some() 是最相似的,
阅读全文
摘要:1、原型链 基本思想:利用原型让一个引用类型继承另外一个引用类型的属性和方法。 原型链算是实现继承的一个简单又比较好理解的一个方法了,对于原型链不理解的可以先去看看彻底理解 JS 的原型和原型链。具体实现如下: <script> function Parent(){ this.a = 66; thi
阅读全文
摘要:前言 异步编程允许我们在执行一个长时间任务时,程序不需要进行等待,而是继续执行之后的代码,直到这些任务完成之后再回来通知你。早期的异步编程是通过回调函数实现的,这种编程的模式避免了程序的阻塞,大大提高了CPU的执行效率,尤其适用于一些前后端数据库交互的操作。然而回调函数会出现回调地狱的情况,为了解决
阅读全文
摘要:前言 在网页实际运行的某些场景下,有些事件会不间断的被触发,如scroll事件,而不像我们想象中的,滚动一次触发一次,稍微滚动一下就会触发n多次scroll事件。如下: window.onscroll = function (){ console.log(123); } //监听滚动条滑动 我只是轻
阅读全文
摘要:原理 JS中的sort()方法用于对数组进行排序,并返回数组。 默认情况下按升序排列数组,但是是根据字符串UniCode码进行比较。sort()方法进行排序时会在每一项上调用String()转型函数,然后通过字符串UniCode码来决定顺序,即使数组的元素都是number类型,也会把它转换成字符串再
阅读全文
摘要:1、for 循环 最基本的循环,这里就不多作介绍了 for(var i = 0;i < 7;i++){ console.log(i); } 2、for in 循环 一般用于循环对象,如下: obj = { name: 'waq', age: 22, luck: 'come' } for (let i
阅读全文
摘要:在上一篇博客中我们了解了事件流中的事件冒泡和事件捕获,那么事件委托又是什么呢?命名这么相似,肯定是有一定关系的,那么又有什么关系呢?所以接下来我们来详细了解一下事件委托。 什么是事件委托? 事件委托也称事件代理,就是利用事件冒泡,把事件加到父级上,触发执行效果。 简单点来说就是把本来自己要干的事情委
阅读全文
摘要:前言 JavaScript 与 HTML 的交互是通过事件实现的。 而事件流描述了页面接收事件的顺序。DOM2 Event 规范规定事件流分为3个阶段:事件捕获、到达目标和事件冒泡,如下图。非常有意思的是 IE 和 Netscape(网景) 开发团队提出了几乎完全相反的事件流方案。IE 支持事件冒泡
阅读全文
摘要:在讨论js的浅拷贝之前,我们先来看一下js的数据类型。 一、js的数据类型 基本数据类型:存放在栈里面,里面直接开辟一个空间,存放的是值。栈是有结构的,每个区块都是按照后进先出的方式次序存放,基本类型的数据相对是比较稳定的,占的内存也比较小,所有寻找速度比较快,如果基本类型复制的话,栈中重新开辟个新
阅读全文
摘要:前言 我们都知道JavaScript是单线程的,一次只能执行一个任务,当有一个任务耗时很长时,后面的任务就必须等待。那么,有什么办法,可以解决这类问题呢? 那就是使用异步执行,通常的异步执行有三种,回调函数、事件监听以及发布订阅。 但是当网络请求非常复杂时,就会出现回调地狱,如下: 正常情况下,这么
阅读全文
摘要:1、indexof去重方法 遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 function remove(arr) { var temp = []; //建立一个临时数组 for(var i = 0;i < arr.length;i++){
阅读全文
摘要:在学习闭包之前,我们先来搞清楚变量的作用域 一、变量的作用域 变量的作用域无非就两种:全局变量和局部变量。 javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 var a = 22; function f1() { console.log(a); } f1();//22 当然,
阅读全文
摘要:前言 默认情况下js都是同步加载的,又称阻塞模式,如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>js异步加载</title> <script src="test1.js"></script> <script src="
阅读全文
摘要:js中有两个判断数组是否存在某个元素的方法,一个是indexOf(ES5提供),一个是includes(ES6提供)。 首先我们返回值来分析 let arr = [21,22,23]; console.log(arr.indexOf(22));//1 console.log(arr.indexOf(
阅读全文
摘要:MDN解释:arguments 是一个对应于传递给函数的参数的类数组对象。 arguments的使用 当我们不确定有多少个参数传递的时候,可以用arguments来获取。在js中,arguments实际上是当前函数的一个内置对象。所有的函数都内置了一个arguments对象,arguments对象中
阅读全文
摘要:箭头函数是ES6标准中新增的一种函数,在详细的讨论箭头函数之前,我们先来看看函数的四种定义方式 函数的四种定义方式 1、函数声明的方式(常用) function sum (num1,num2) { return num1 + num2; } 注意函数定义最后没有加分号。必须有名字,会函数提升,在预解
阅读全文
摘要:这三个方法都是 Function 对象自带的方法,挂载在 Function.prototype 上。都有一个共同的功能:改变this的指向,那么又是怎么改变的呢?接下来我们依次来分析这三个方法 1、call()方法 说明:传入多个参数,第一个是this的指向,之后的参数都是函数的参数。 例如:B.c
阅读全文
摘要:前言 在刚开始学习js的时候,我们肯定都会对this的指向问题感到很迷惑,特别是在一些较为复杂的代码里更是被this搞的晕头转向。其实,我们只需要记住一句话:this始终指向它的调用者 好了,初步了解了this的指向问题,那么问题来了,我们又为什么要使用this呢?首先我们来看一段话: 从前有座山,
阅读全文
摘要:new一个函数,都会发生什么? 关于new这个关键字,我们都会用,但是如果问你new一个函数时会发生什么?我想你就懵了 看过红宝书的,可以很清晰的说出new后发生的四件事: 1. 创建一个新对象; 2. 将构造函数的作用域赋给新对象(因此this就指向了这个新对象); 3. 执行构造函数中的代码(为
阅读全文