
JS
文章平均质量分 81
Ronychen’s blog
不想努力了,不,你想......
展开
-
对象(含原型)
ECMAScript 提供了Object.defineProperties()方法。这个方法可以通过多个描述符一次性定义多个属性。它接收两个参数:要为之添加或修改属性的对象和另一个描述符对象,其属性与要添加或修改的属性一一对应year_: {},edition: {value: 1},year: {get() {},});本文是基于Javascript高级程序设计(第四版)的内容自行总结和梳理,后续还会出一系列关于本书的读后总结博文!原创 2023-04-05 20:00:24 · 359 阅读 · 0 评论 -
【js进阶】-函数柯里化
一、高阶函数在正式聊函数柯里化之前,我这里给大家补充下高阶函数的概念和应用:1.1、什么是高阶函数?高阶函数英文叫 Higher-order function,它的定义很简单,就是至少满足下列一个条件的函数:接受一个或多个函数作为输入输出一个函数也就是说高阶函数是对其他函数进行操作的函数,可以将它们作为参数传递,或者是返回它们。 简单来说,高阶函数是一个接收函数作为参数传递或者将函数作为返回值输出的函数。1.2、高阶函数例子其实平时开发中经常会用到高阶函数,只是之前你不清楚其概念而已,来原创 2022-01-18 11:14:20 · 1225 阅读 · 0 评论 -
【js进阶】-this解读
一、前序在之前的博文中我们讲到函数在调用的时候会创建执行上下文,而执行上下文中主要有三个方面组成(创建作用域链、生成变变量对象以及确定this指向)从上面这张执行上下文的生命周期图可以看到,执行上下文的创建阶段,会分别生成变量对象,建立作用域链,确定this指向。其中变量对象与作用域链我们都已经明白了(如果有不太清楚的同学,可以去看之前的博文(js基础-执行上下文/执行上下文栈)),本文的关键,就是确定this指向。从上面可以得出一条非常重要的结论,对于我们来说一定要记住:结论:this指向是在函原创 2022-01-07 11:42:41 · 1053 阅读 · 0 评论 -
【js进阶】-js执行机制
一、前序关于js执行机制的内容,其实我早些时间也做过内容的分享,近期我是想着再对js的基础核心内容做一轮系统性的巩固和复习,所以本文相对于之前的文章会有部分细节点的更新,会让读者更加地系统理解这块的知识点,这里我也贴一下原先文章的地址(深入理解js执行机制)我们知道页面的渲染,JS的执行,事件的循环,都是在浏览器内核中进行的,也就是浏览器渲染进程,所以今天要讨论的js的整个执行机制其实就是在浏览器内核中处理的,这些概念性的理解,如果有同学还不太清楚的,可以去看下我另外一篇文章(点我跳转)二、 js执行原创 2021-12-31 14:56:59 · 1536 阅读 · 0 评论 -
【js进阶】-闭包
闭包,一说起这个词,很多人觉得就很难理解,或者说很难记住,那是因为对于该词的解释版本太多了,导致你都不知道哪个是正确的解释一、定义从理论角度:闭包是指那些能够访问自由变量的函数,所以说所有的函数。因为它们都在创建的时候就将上层上下文的数据保存起来了。哪怕是简单的全局变量也是如此,因为函数中访问全局变量就相当于是在访问自由变量,这个时候使用最外层的作用域,所以从理论的角度,所有函数都算是闭包从实践角度:以下函数才算是闭包:即使创建它的上下文已经销毁,它仍然存在(比如,内部函数从父函数中返回)在代码原创 2021-12-22 18:03:55 · 796 阅读 · 0 评论 -
【js进阶】-原型/原型链
一、构造函数创建对象我们先使用构造函数创建一个对象,先来认识下构造函数function Person() {}var person1 = new Person();person1.name = '张三';console.log(person1.name) // 张三在这个例子中,Person 就是一个构造函数,我们使用 new 创建了一个实例对象 person1prototype每个函数都有一个 prototype 属性,它指向的是一个对象,既然它是一个对象,我们就手动给上面例子中的Pe原创 2021-12-21 17:24:06 · 834 阅读 · 0 评论 -
【js基础】-错误处理与调试
一、错误分类执行代码期间可能会发生的错误有多种类型。每种错误都有对应的错误类型,而当错误发生时,就会抛出相应类型的错误对象。js共定义了下列 7 种错误类型:Error:基本的错误类型,其他类型都继承自这个类型EvalError:使用 eval()函数而发生异常时被抛出RangeError:范围错误ReferenceError:引用错误SyntaxError:语法错误TypeError:类型错误URIError:表示以一种错误的方式使用全局URI处理函数而产生的错误,例如:(decodeU原创 2021-12-16 11:23:39 · 1274 阅读 · 0 评论 -
Web components
组件化介绍背景:原先一个复杂页面,什么是组件化:组件化的优点:组件是模块化编程思想的体现,便于代码复用便于团队协作开发,提高了开发效率代码维护性好,对于代码的管理和使用非常方便,组件的加载和卸载只需要添加或删除一行代码即可完成组件提供了html、css、js的封装方法,实现了与同一页面其他代码的隔离组件非常灵活,定制非常容易,组件往往会留出接口,供使用者设置常用属性,比如title组件,使用者可以自定义标题、样式等...原创 2021-11-23 10:13:53 · 1703 阅读 · 0 评论 -
【js基础】-数据类型
概述ECMAScript 规范规定语言类型有六种 Undefined,Null,Boolean,String,Number,和 Object, ES6 又添加了一种基本类型,叫Symbol。基本类型:Undefined、Null、Boolean、String、Number、Symbol 都是基本类型引用类型:Object 是引用类型,这包括数组(array)、对象(object)、函数(function)等他们的划分方式其实是其是否可以表示为固定长度, 比如Undefined,Null,Boolea原创 2021-11-18 14:54:09 · 1232 阅读 · 0 评论 -
javascript 数组分组多种方式实现
方式一:使用for循环方式实现://数据分组函数(每组500条)function group(data) { var result = []; var groupItem; for (var i = 0; i < data.length; i++) { if (i % 500 == 0) { groupItem != null && result.push(groupItem); groupI原创 2021-08-18 14:51:15 · 3907 阅读 · 0 评论 -
月读书系列-你不知道的javascript(上)
一、作用域和闭包1.1、作用域是什么?1.1.1、编译原理作用域是一套规则,用来存储和访问变量。任何编程语言都不开作用域,正是作用域这种存储和访问变量的能力将状态带给了程序,赋予了编程语言可以实现丰富功能的能力。讲到作用域就不得不提两个重要角色:引擎和编译器。引擎从头到尾负责整个javascript程序的编译和执行过程。编译器负责词法分析、语法分析、代码生成等脏活累活。javascript 是一门编译型的语言,但它不是提前编译的,它的编译发生在在代码执行前的几微秒。传统的编译语言的编译过程分为三原创 2021-05-16 17:28:09 · 364 阅读 · 1 评论 -
【js进阶】-深浅拷贝
一、为什么会出现深浅拷贝实质上是由于JS对基本类型和引用类型的处理不同。基本类型指的是简单的数据段,而引用类型指的是一个对象,而JS不允许我们直接操作内存中的地址,也就是不能操作对象的内存空间,所以,我们对对象的操作都只是在操作它的引用而已。二、js中复制初体验当我们复制一个基本类型的值时,会创建一个新值,并把它保存在新的变量的位置上。而如果我们复制一个引用类型时,同样会把变量中的值复制一份放到新的变量空间里,但此时复制的东西(也就是值)并不是对象本身,而是指向该对象的指针。所以我们复制引用类型后,.原创 2021-05-13 17:39:53 · 1863 阅读 · 3 评论 -
【js进阶】-内存管理
一、数据类型分类基本数据类型字符串类型(String)、数字类型( Number)、布尔类型( Boolean)、空( Null)、未定义( Undefined)Symbol类型,总共6种注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。引用数据类型引用数据类型就只有Object类型,这包括数组(array)、对象(object)、函数(function)等二、栈、堆内存在js引擎中对变量的存储主要有两种位置,堆内存和栈内存。存储对象:栈内存主要用于存储原创 2021-05-13 10:49:47 · 275 阅读 · 0 评论 -
锚点-简单实现
一、什么是锚点?锚点是网页制作中超级链接的一种,又叫命名锚记,像一个迅速定位器一样,是一种页面内的超级链接,运用相当普遍。 使用命名锚记可以在文档中设置标记,这些标记通常放在文档的特定主题处或顶部。 然后可以创建到这些命名锚记的链接,这些链接可快速将访问者带到指定位置。二、如何简单实现?首先在要跳转的目标元素上增加一个id属性,例:<h1 id='123'>我是最终要跳转的目标位置</h1>然后在点击开始跳转的a标签上增加href属性,例:<a href="#123"原创 2021-04-19 10:58:07 · 1127 阅读 · 0 评论 -
js中var、const、let之间的区别以及作用域
前言:要说他们的区别,首先需要了解作用域的概念作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期。js中的作用域一共有两种(块级作用域与函数作用域)首先先理解下这两个概念块级作用域:任何一对花括号 {} 中的语句都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。比如if(){} ,for(){}中的花括号都是块级作用域函数作用域:很明显是function(){}的形式,定义在函数中的参数和变量在函数外部是不可见的关于这原创 2021-04-02 17:25:25 · 436 阅读 · 0 评论 -
JS模块规范:AMD、UMD、CMD、commonJS、ES6 module
CommonJS特点:1、模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。2、模块加载会阻塞接下来代码的执行,需要等到模块加载完成才能继续执行——同步加载。环境:服务器环境应用:nodejs的模块规范是参照commonJS实现的。语法:1、导入:require(‘路径’)2、导出:module.exports和exports注意:module.exports和exports的的区别是expor转载 2021-03-19 17:56:39 · 298 阅读 · 0 评论 -
【js进阶】-执行上下文/执行上下文栈
Javascript深入之执行上下文、执行栈一、什么是执行上下文?简而言之,执行上下文是评估和执行 JavaScript 代码的环境的抽象概念。每当 Javascript 代码在运行的时候,它都是在执行上下文中运行。二、执行上下文的类型JavaScript 中有三种执行上下文类型。全局执行上下文 : 这是默认或者说基础的上下文,任何不在函数内部的代码都在全局上下文中。它会执行两件事:创建一个全局的 window 对象(浏览器的情况下),并且设置 this 的值等于这个全局对象。一个程序中只会有一原创 2021-02-24 08:34:01 · 723 阅读 · 0 评论 -
了解跨域,看这篇就够了!
一、定义:跨域又名非同源策略请求,同源指的是相同的协议/域名/端口,三者都要一样才叫同源二、产生跨域的原因服务器拆分(这样一拆分后域名就不同了) web服务器:处理静态资源,比如为kbs.qq.com data服务器:业务逻辑和数据分析,包含数据管理asdasd.qq.com 图片服务器:image.qq.com调用第三方开源接口,也会产生跨域三、判断同源和跨域通过协议、域名、端口三者来判断,只有三者都一样的时候才是同源,其中一项不同就是跨域;四、跨域方案1、早期跨域及处原创 2020-07-18 14:20:36 · 1337 阅读 · 0 评论 -
fetch用法
序言:在传统Ajax 时代,进行 API 等网络请求都是通过XMLHttpRequest或者封装后的框架进行网络请求,然而配置和调用方式非常混乱,对于刚入门的新手并不友好。今天我们介绍的Fetch提供了一个更好的替代方法,它不仅提供了一种简单,合乎逻辑的方式来跨网络异步获取资源,而且可以很容易地被其他技术使用;fetch是web提供的一个可以获取异步资源的api,它提供的api返回的是Promise对象;与传统Ajax对比:Ajax代码如下:var xhr = new XMLHttpRequest(原创 2020-07-14 20:15:43 · 1268 阅读 · 0 评论 -
JS 数据处理
一、对象数组**栗子1:**假设又一对象数组locationCompareData,元素是一个含有多个属性的对象,值如下:**需求:**先需要将以上数组,在相同location、相同时间点的不同type类型的Num值相加作为该点的值;代码:代码思路解析:先定义一个空对象packetCountMap,然后遍历刚才的上面的对象数组,然后定义一个itemKey字符串(不变量属性拼接而成),...原创 2020-03-21 11:22:47 · 430 阅读 · 0 评论 -
深入理解js执行机制
一、基础知识JS为什么是单线程的?JS最初被设计用在浏览器中,那么想象一下,如果浏览器中的JS是多线程的。场景描述:那么现在有2个线程,process1 process2,由于是多线程的JS,所以他们对同一个dom,同时进行操作process1 删除了该dom,而process2 编辑了该dom,同时下达2个矛盾的命令,浏览器究竟该如何执行呢?这样想,JS为什么被设计成单线程应...原创 2020-02-05 16:37:52 · 455 阅读 · 0 评论 -
JS中几种值为假的情况
你的代码中时常会有需要判断语句的真假,然后再根据真假来进行下一步的操作,总共有以下几种情况为false;null const a='' if(!null){ alert("该值是false") }‘’ const a='' if(!a){ alert("该值是false") }0 const a=0 if(!a){ ...原创 2020-01-31 16:56:53 · 520 阅读 · 0 评论 -
Js 面向对象摘要
前序热身一、js中的数据类型原始类型a、 原始类型的变量直接保存原始值,(而不是一个指向对象的指针);var a =1 var b =a说明:两者的存储地址是不一样的,a变量保存的是值1,b变量保存的也是值1,a的值改变了并不会影响到b;b、如何鉴别原始类型(typeof 是小写) console.log(typeof "a"); //"string" console.l...原创 2020-01-01 21:07:06 · 277 阅读 · 0 评论 -
【js进阶】-作用域/作用域链
前言JavaScript中有一个被称为作用域(Scope)的特性。虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,本文我会尽我所能用最简单的方式来解释作用域和作用域链,希望大家有所收获!作用域(Scope)1.什么是作用域作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。换句话说,作用域决定了代码区块中变量和其他资源的可见性。可能这两句话并不好理解,我们先来看个例...转载 2019-12-17 22:39:58 · 291 阅读 · 0 评论