![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javascript
文章平均质量分 50
Jiabing Yu
公主号【摆烂工程师】
展开
-
当你解析JSON时,Number类型双精度丢失,可以尝试使用 json-bn
前端JSON.parse解析时,Number类型双精度丢失可以尝试用json-bn去解决。原创 2022-11-05 22:12:45 · 691 阅读 · 0 评论 -
(JS用 “数组解构“ 的方式)交换两个变量时的一些问题
JS用“数组解构”的方式交换变量时,不加《分号》出现的问题!原创 2022-02-06 17:18:46 · 1312 阅读 · 0 评论 -
(已解决) Vite中编译JSX时在后缀(.vue)单文件报错原因
原因:因为目前@vitejs/plugin-vue-jsx插件无法解析编译.vue后缀的文件解决:把.vue后缀文件更改为.jsx文件 就可以执行App.jsx// 1. Vite在启动时会做依赖的预构建// 2. 预构建,运行时默认都只会对jsx与tsx做语法转换。不会对js做jsx的语法转换。// 目前vite不支持.vue单文件的jsx编译export default { data() { return { counter: 0原创 2021-11-17 21:51:34 · 7646 阅读 · 4 评论 -
一篇带你搞懂 JavaScript中的 this
thisthis实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用。(类似于 动态作用域)关于 this 的误解this即不指向函数自身也不指向函数的词法作用域。绑定规则 - 4条1. 默认绑定在非严格模式下,this默认绑定在全局变量,在浏览器上的话,this就是指向window严格模式下,this的绑定默认是undefined注意: 对于默认绑定来说,决定this绑定对象的并不是调用位置是否处于严格模式,而是函数体是否处于严格模式。2. 隐式绑定如:f原创 2021-10-26 11:43:54 · 87 阅读 · 0 评论 -
关于JS中的Object.assign() 拷贝用法
Object.assign()Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。那什么是可枚举的变量: 你可以理解为可以用 for…of…遍历的变量。注意几点:首先它是拷贝可迭代的对象。如: String, Object以及可枚举的Symbol拷贝的源对象,到目标对象时,同样的key,目标对象key的值会被源对象覆盖它并不是一个深拷贝,可枚举属性的值包含其他引用类型的对象,指针还是共同的指着这个对象。看几个例子(1) 覆盖c原创 2021-10-21 17:46:19 · 935 阅读 · 2 评论 -
js中的 >>>0 位运算 解读
>> 和 >>> 的区别>> :是有符号位运算。>>> : 是无符号的位运算。看示例在chrome浏览器上的调试结果:在 null 、undefined、 NaN 等非数值的位运算,统一返回正整数 0如果对一个负数进行的>>>无符号位移运算的话,将负数的二进制码右移后,用 0 补上,最后产生一个很大的正整数。(0111111111111111...)区别而在其他语言上 无符号右移 0 位上的区别://java原创 2021-10-14 09:35:53 · 1640 阅读 · 0 评论 -
总结《JavaScript的内存管理》
内存管理谈到内存管理,就要说一下C语言的内存管理接口,比如malloc()和free()。对应的接口意思: 分配 和 释放。而JavaScript是在创建变量时自动进行了分配内存,并且在不使用它们时自动释放。释放的过程称为垃圾回收。内存生命周期不管什么语言,内存生命周期基本是一致的:分配需要的内存使用分配到的内存进行读和写不需要该内存时将其释放在JavaScript中,对应的内存生命周期的变化:创建变量/函数/对象 (对应内存生命周期的第1步,分配内存)使用值的过程(对应内存生命周期原创 2021-10-08 16:47:53 · 81 阅读 · 0 评论 -
如何JavaScript判断对象的属性是否为原型上的属性
首先查找对象的属性有两个方法: Object.hasOwnProperty() 和 in 操作符Object.hasOwnProperty()是查找对象是否包含该属性,非原型上的属性。而 in操作符是可以查找对象上原型上的属性和非原型上的属性。知道上面两个方法后,我们可以写出一个判断是否是对象原型上的属性的方法 // 判断是否原型上的属性 function hasPrototypeProperty(obj, property) { return !obj.hasO原创 2021-07-18 17:23:14 · 975 阅读 · 1 评论 -
JavaScript的短路求值:true && console.log(‘test‘)
今天在看代码的时候,看到了一条语句如下:true && console.log('test')转换成if语句:if(true) console.log('test')这下不用解释也明白了吧!还不太明白的话,可以看一下表达式和逻辑运算的知识。...原创 2021-07-11 00:55:39 · 145 阅读 · 0 评论 -
JavaScript的代理(Proxy)
代理是目标对象的抽象。目前理解为,代理就是给目标对象绑定一个指针。或者是JavaScript中的代理的原型绑定到了目标对象的原型上,但是代理的原型是undefined。当对象改变或者代理改变,两者都会互相改变。一种响应式的行为。可撤销代理bug: 代理变量名必须为proxy,撤销方法变量名必须为revokeconst target = { id: 'target'};const handler = {};定义一个普通的proxy代理, 为了不与可撤销代理的指定变量名冲突,普通代原创 2021-04-23 20:24:40 · 1046 阅读 · 0 评论 -
JavaScript的封装: 包含工厂模式封装、构造函数模式封装、原型模式封装。(含代码实现)
/** * 封装: * 此节专门讲函数的工厂模式、构造函数模式和原型模式的封装 * Author:大冰 *///工厂模式//工厂模式需要创建一个对象,最后return这个对象。function createPerson(name, age, job) { const o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function() { .原创 2021-04-13 20:40:01 · 191 阅读 · 1 评论 -
JavaScript的期约(Promise)
期约(Promise)期约的状态代表期约是否完成,有三种状态:待定(pending): 表示尚未开始或者正在执行中。兑现(fulfilled,有时候也称为“解决”,resolved): 表示已经成功完成。拒绝(rejected): 则表示没有成功完成,也就是已经失败。在待定状态下,期约可以落定(settled)为代表成功的兑现(fulfilled)状态,或者代表失败的拒绝(rejected)状态。每个期约只要状态切换为兑现(fulfilled),就会有一个私有的内部值(value原创 2021-03-18 19:18:22 · 1533 阅读 · 0 评论 -
一篇带你搞懂JavaScript的面向对象(深入清晰)——深刻明白prototype(原型)与继承
关于原型和实例、构造函数的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。所有函数的默认原型都是Object的实例,因此默认原型都会包含一个内部指针,指向Object.prototype。这也正是所有自定义类型都会继承toString()、valueOf()等默认方法的根本原因。(1)原型:我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享原创 2021-03-07 17:04:27 · 124 阅读 · 1 评论 -
巧用JavaScript的callee、caller、apply、call、length、bind等方法。让自己的代码更有扩展性更有维护性
arguments.callee //callee的属性指向拥有这个arguments对象的函数。阶乘例子:消除了函数紧密耦合的现象。function factor(num) { if(num <= 1) { return 1; } else { return num * arguments.callee(num - 1); //arguments.callee == factor } }arguments.caller //保存着调用当前函数的函数的引用另一个函数调用原创 2021-03-06 13:59:36 · 102 阅读 · 1 评论 -
如何让早期浏览器兼容XHR
function creataXMLHTTP() { var request = false; if(window.XMLHttpRequest) { request = new XMLHttpRequest(); } else if (window.ActiveXObject) { var versions = ["Microsoft.XMLHTTP", "MSXML....原创 2019-06-18 16:05:38 · 207 阅读 · 0 评论 -
js数组的一些API
数组API API:别人写好的,我们直接使用的程序(1)数组转字符:2种1. String(arr)将每个元素转为字符串,然后用逗号隔开2. arr.join(“连接符”)将每个元素转为字符串,可自定义连接符(2) 拼接和选取:拼接:var newArr= arr1.concat(值1,值2,arr2)选取:var subArr=arr.slice(starti,endi+1);...原创 2018-10-17 22:51:12 · 208 阅读 · 0 评论 -
push()与pop()的使用
进出栈操作 js是按照标准的“栈式操作”访问数组,所有的栈式操作的特点是“后进先出”进栈 push()入栈:在栈顶(数组的尾部)添加指定的元素,并返回新数组的长度。出栈 pop()出栈:删除栈顶(数组的尾部)的一个元素,并返回删除的元素。其他shift():删除数组头部的第一个元素,并返回删除的元素。unshift():在数组头部的第一个元素前添加一个元素,并返回新数组的长度。...原创 2018-10-18 10:50:53 · 36994 阅读 · 1 评论 -
JavaScript之表达式、运算符
这次我们来说一下什么是表达式、运算符。表达式在Wiki(维基百科)上说:表达式是指能计算出值得任何可用程序单元。在JS权威指南:表达式是一种JS短语,可使JS解释器用来产生一个值。表达式的分类:原始表达式数组、对象的初始化表达式[1,2] 等价于 new Array(1,2)[1,,,4] 等价于 [1,undefined,undefined,4]{ x:1, y:2}...原创 2019-02-15 01:21:25 · 171 阅读 · 0 评论 -
Javascript——类型(一)
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/qq_41308489/article/details/86764563原创 2019-02-05 00:14:53 · 122 阅读 · 0 评论 -
Javascript——类型(二)
我们先看一下这三个符号!= 、== 、 === 他们分别代表什么呢?=:一个等号它代表的是赋值。==:二个等号表示比较,但是会做隐式类型转换。===:三个等号表示严格比较,它是先比较类型,不会做隐式类型转换。隐式转换a == b第一道首先是把字符串转化为number然后做比较,2和3类似前者先转换类型再做比较。4和5是对象!对象他们是利用引用去比较的,否则返回false“...原创 2019-02-07 23:59:38 · 86 阅读 · 0 评论 -
JavaScript——类型检测
typeoftypeof 检测运算是最常见的,适合函数对象和基本类型判断。typeof 100 返回 “number”typeof true 返回 “boolean”typeof function 返回 “function”typeof (undefined) 返回 “undefined”typeof new Object() 返回 “object”typeof ...原创 2019-02-13 23:46:59 · 113 阅读 · 0 评论 -
JavaScript关于面向对象(OOP)上
面向对象程序设计(Object-oriented programming , OOP)是一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性面向对象的特征 主要四部分如下:继承封装多态抽象继承继承是实现复用性的一个重要的手段。1. 基于原型的继承当我们定义一个函数,函数都有一个...原创 2019-03-03 20:14:08 · 93 阅读 · 0 评论 -
关于TypeScript的面向对象(OOP)
面向对象是什么呢?在维基百科里面说道:面向对象程序设计(Object-oriented programming , OOP)是一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性关于TypeScript的面向对象主要特性有以下这些:类类的继承范型(generic)接口(interface...原创 2019-03-03 21:44:20 · 619 阅读 · 0 评论 -
设计模式——单例模式
首先我们先了解一下设计模式是什么呢?设计模式(Design Pattern):是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式的目的:使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。首先我们先来认识一下最简单的单例模式!单例模式是什么呢?单例模式:我们可以把它看做一个皇帝,我们古代的皇帝有且一个,因为一山容不下二虎,如果有第二个就会导致...原创 2019-03-03 23:18:11 · 73 阅读 · 0 评论 -
如何禁止HTML中div点击事件
pointer-events的风格更像JavaScript,它能够:阻止用户的点击动作产生任何效果阻止缺省鼠标指针的显示阻止CSS里的hover和active状态的变化触发事件阻止JavaScript点击动作触发的事件//可以定义一个css样式 任何进行封装.disabled { pointer-events: none; }// 禁用启用封装function $id(d...原创 2019-04-13 18:08:23 · 3074 阅读 · 0 评论 -
手写深拷贝
说到深拷贝,大家应该第一反应就是这两个方法:JSON.parse() 和 JSON.stringify()当然,这种方法需要保证对象是JSON的安全,所以只适用于部分情况。话不多说,直接上码: function deepCopy(obj){ //判断是否是简单数据类型 if(typeof obj == "object") { ...原创 2019-05-21 13:40:00 · 525 阅读 · 0 评论 -
关于js数组的sort()排序的详解
sort()是对数组排序的一个api,对原有数组元素进行位置排序,关于排序有几种方法,以下列出几种简单常用的方法供给大家参考:1、简单数组排序 var arr = new Array(1,4,2,5,3); arr.sort(); console.log("arr = ", arr.join());//输出 1,2,3,4,5; join的方法是把数组按默认的逗号拼接成一个字符串2、简...原创 2019-05-24 21:44:25 · 4471 阅读 · 0 评论 -
关于javascript的数组与二维数组、关联数组
关于javascript的数组与二维数组、关联数组数组:关联数组:二维数组:数组: 什么是:内存中连续保存多个数据的内存空间 为什么:便于批量管理和操作多个相关的数据创建数组: 有3种创建方法;(1)创建一个空数组:var arr=[]; var arr=new Array();(2)创建数组时就初始化值:var arr=[45,12,34,56]; var arr=new ...原创 2018-10-17 22:15:54 · 2203 阅读 · 0 评论