![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js基础
文章平均质量分 86
夜已如歌_ok
这个作者很懒,什么都没留下…
展开
-
关于js隐式转换
JS隐式类型转换原创 2021-12-07 13:48:44 · 261 阅读 · 0 评论 -
理解this绑定规则
js this绑定规则: new、显式绑定、隐式绑定、默认绑定原创 2019-05-09 22:31:19 · 761 阅读 · 0 评论 -
requestAnimationFrame
requestAnimationFramewindow.requestAnimationFrame()告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行原创 2021-11-11 17:27:22 · 26721 阅读 · 1 评论 -
js call和apply方法
call、apply用法,区别,以及模拟实现原创 2019-03-28 23:17:27 · 503 阅读 · 0 评论 -
JS延迟加载的几种方式
js的加载、解析和执行会阻塞页面的渲染过程,因此我们希望js脚本能够尽可能的延迟加载,提高页面的渲染速度。一般有以下几种方式:设置defer属性 设置async属性 动态创建DOM方式 使用setTimeout延迟方法 在body结束标签前引入js(让JS最后加载)...原创 2021-03-17 21:47:51 · 544 阅读 · 0 评论 -
学习underscore之比较两个元素是否相同
underscore1.11.0中判断两个参数相同的函数为isEqualisEqual 函数重新定义相等:原创 2020-10-27 18:58:51 · 531 阅读 · 0 评论 -
js数组交集、并集、差集
数组交集1. 利用filter + indexOfvar arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9], arr2 = [1, 3, 5];var intersection = arr1.filter(function (val) { return arr2.indexOf(val) > -1;})console.log(intersection); // [1, 3, 5]但这种方法针对是value值比较简单的Number(不包括NaN)、St原创 2020-10-21 21:59:27 · 1375 阅读 · 0 评论 -
JS 异步解决方案
1. 回调函数(callback)2.Promise3.Generator4.Async/await原创 2020-03-31 17:32:49 · 323 阅读 · 0 评论 -
js 箭头函数与普通函数
先来说说箭头函数和普通函数的区别:箭头函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。 不可以当做构造函数,就是说不能使用new命令,否则会抛出一个错误。 不能使用arguments对象,该对象在函数体内不存在。我们可以使用rest参数替代。 不能使用yield命令,因此箭头函数不能用作Generator函数第一点,this对象的指向是可变的,但是在箭头函数中,它...原创 2019-11-24 21:13:20 · 698 阅读 · 0 评论 -
js 实现数组扁平化
数组扁平化即将多层级数组转化成一层数组。原创 2019-11-17 20:20:06 · 597 阅读 · 0 评论 -
js 类数组对象与arguments
类数组对象是指拥有一个length属性和若干属性的对象。Arguments对象就是一个类数组对象。另外: 常见的类数组对象还包括: 使用document.getElementsByTagName/ClassName()等方法获得的HTMLCollection;使用querySelector获得的nodeList我们将类数组转换成数组,有以下方法:1.利用Array.prototyp...原创 2019-11-17 19:55:29 · 460 阅读 · 0 评论 -
js实现深拷贝
1. 利用JSON.parse(JSON.stringify())var obj = {a: 1, b: [2], c: {d: 4}};var copyObj = JSON.parse(JSON.stringify(obj));此种方法不能拷贝undefined, Function、Symbol、RegExp、Date、Set、Map等,以及不能解决循环引用;2 简易版深拷贝...原创 2019-07-25 22:35:18 · 439 阅读 · 0 评论 -
js 实现浅拷贝
1. 利用Object.assign 实现(针对对象只有一层,没有嵌套的情况)var obj = {name: 'zxx'};var copy = Object.assign({}, obj)2. 数组只有一层的话可以利用concat, slice 等实现;var arr=[1,2, 3];var arr1 = arr.concat();var arr2 = arr.slic...原创 2019-07-25 22:33:59 · 846 阅读 · 2 评论 -
js常见的DOM操作
创建新节点:createDocumentFragment() //创建一个DOM片段createElement() //创建一个具体的元素createTextNode() //创建一个文本节点添加、移除、替换、插入appendChild()removeChild()replaceChild()insertBefore() //在已有的子节点前插入一个新的子节...原创 2019-05-27 21:52:24 · 504 阅读 · 0 评论 -
js 一些基础工具方法
判断数组function isArray(obj) { return Array.isArray ? Array.isArray(obj) : Object.prototype.toString.call(obj) === '[object Array]';}判断对象function isObject(obj) { var type = typeof obj; ret...原创 2019-05-27 21:41:10 · 406 阅读 · 0 评论 -
js函数式编程之代码组合(compose)
var compose = function(f,g) { return function(x) { return f(g(x)); };};这就是函数组合(compose),f 和 g 都是函数, x是在它们至今通过“管道”传输的值。用法1:var toUpperCase = function(x) { return x.toUpperCase(); };va...原创 2019-05-09 22:38:09 · 2556 阅读 · 0 评论 -
js函数式编程之柯里化(curry)
curry概念: 只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。你可以一次性地调用curry函数,也可以每次只传一个参数分多次调用。var add = function(x) { return function(y) { return x + y; };};var increment = add(1);var addTen = add(10);...原创 2019-05-06 22:38:24 · 709 阅读 · 0 评论 -
js 实现继承的几种方式
1.原型链继承; 构造函数; 组合继承; 寄生组合式继承; ES6class继承原创 2019-04-29 21:38:59 · 309 阅读 · 0 评论 -
js Object常用方法
这一篇简单介绍es6 Object的新属性方法.is说明: 用于判断两个值是否是相同的值。语法: Object.is(value1, value2);参数: value1,value2分别表示第一个,第二个需要比较的值返回值: Boolean 表示两个参数是否相同。...原创 2019-04-03 23:04:46 · 646 阅读 · 0 评论 -
js bind方法
MDN上的解释是: bind()函数会创建一个新绑定函数,当绑定函数被调用时,会以bind()的第一个参数作为运行时的this,之后的一系列参数加上绑定函数运行时本身的参数按顺序作为原函数的参数。1.bind方法绑定对象,并且返回一个函数var module = { x: 42, getX: function() { return this.x; }}var unbo...原创 2019-03-26 22:51:46 · 2243 阅读 · 0 评论 -
JS原型及原型链
原型及原型链原创 2019-03-31 22:52:41 · 569 阅读 · 0 评论 -
js 数组方法汇总
1.concat说明: 用于合并两个或多个数组。此方法不会更改现有数组,返回值是一个新数组。var array1 = ['a', 'b', 'c'];var array2 = ['d', 'e', 'f'];console.log(array1.concat(array2));// ["a", "b", "c", "d", "e", "f"]语法:var new_array = ...原创 2019-03-31 19:49:33 · 3761 阅读 · 0 评论 -
js XMLHttpRequest
说明: 使用XMLHttpRequest (XHR)对象可以与服务器交互。通过该对象提供的方法可以从URL获取数据,而无需让整个的页面刷新。这使得Web页面可以只更新页面的局部,而不影响用户的操作。XMLHttpRequest在 Ajax 编程中被大量使用。...原创 2019-04-01 22:42:24 · 1362 阅读 · 0 评论 -
js 创建对象的几种方式
1.工厂模式:function createPerson(name, age, job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function() { console.log(this.name); } return o;}var person1 = cre...原创 2019-04-01 22:59:10 · 564 阅读 · 0 评论 -
js 模拟实现new
js 可以通过new操作符创建对象,包括以下4个步骤:①. 创建一个新对象;②. 将构造函数的作用域赋给新对象(this就指向了这个新对象);③. 执行构造函数中的代码(为这个新对象添加属性);④. 返回该新对象;function Person(name) { this.name = name;}Person.prototype.age = 28;Person.prototype...原创 2019-04-02 22:45:07 · 1477 阅读 · 0 评论 -
JSON.parse和JSON.stringify
JSON对象包括两个方法: parse和stringify方法。除了这两个方法,JSON这个对象本身并没有其他作用,也不能被调用或作为构造函数调用。JSON(JavaScript Object Notation)是一种语法,可用来序列化对象、数组、数值、字符串、布尔值和 null 。它基于 JavaScript 语法,但与之不同:JavaScript不是JSON,JSON也不是JavaScrip...原创 2019-04-02 23:04:32 · 10757 阅读 · 0 评论 -
js 作用域 作用域链
作用域原创 2019-04-08 22:19:39 · 451 阅读 · 0 评论 -
js cookie及相关操作
设置cookie/*** 设置cookies*@param string cname表示key*@param string cvalue表示value*@param number exdays 表示过期时间(exdays天后过期)*/function setCookie(cname, cvalue, exdays) { var expires = ""; if(typeof...原创 2019-04-16 22:51:31 · 457 阅读 · 0 评论 -
js 数据结构(二):队列
队列队列是遵循FIFO(First In First Out,先进先出)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。如现实中的排队:队列的创建:先进行声明:function Queue(){ //这里是属性和方法}然后我们需要一个用于存储队列中元素的数据结构,我们可以使用数组(此时会发现Queue类和Stac...原创 2019-04-26 22:17:56 · 358 阅读 · 0 评论 -
js replace方法
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串语法:stringObject.replace(regexp/substr,replacement)说明:regexp/substr(必须),规定子字符串或要替换的模式的RegExp对象。如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为RegExp对象。replacem...原创 2019-04-26 22:32:56 · 28497 阅读 · 0 评论 -
Promise用法及模拟实现
location对象location对象提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能。它既是window对象的属性,也是document对象的属性;即window.location === document.location....原创 2019-07-25 22:38:27 · 826 阅读 · 0 评论 -
BOM中history、location对象
history对象history.pushState; history.replaceState; popstate原创 2019-04-22 22:15:22 · 657 阅读 · 0 评论 -
js instanceof
语法:object instanceof constructor说明:instanceof运算符用来检测constructor.prototype是否存在于参数object的原型链上。// 定义构造函数function C(){} function D(){} var o = new C();o instanceof C; // true,因为 Object.get...原创 2019-04-28 22:14:10 · 463 阅读 · 0 评论 -
js 数据结构(三):链表
链表链表存储有序的元素集合, 但不同于数组的是链表中的元素在内存中并不是连续放置的。每个元素由一个存储元素本身的节点和一个指向下一个元素的引用指针或(链接)组成。下图展示了一个链表的结构:我们来实现链表, 下面是LinkedList类的骨架:function LinkedList() { var Node = function(element) { thi...原创 2019-04-28 22:42:20 · 376 阅读 · 0 评论 -
js 数据结构(一):栈
栈栈是一种遵从后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈顶。现实生活中就有很多栈的例子。如下图的书本,这一摞书如果要取肯定是先去最上面的那一本,但它是最后一个放上去的,也就是栈顶的元素都是待添加或是待删除的。这就是后进先出的实际例子。栈的创建:我们创建一个类来表示栈。先声明...原创 2019-04-24 22:25:24 · 386 阅读 · 0 评论 -
js 执行上下文
执行上下文, 执行上下文栈原创 2019-04-03 22:56:48 · 452 阅读 · 0 评论