JavaScript
Shopee_Rex
学习ing
展开
-
JavaScript中的“null”与“undefined“在进行数值比较时,当作0处理?null == 0?
分析在开发echart图表的时候,用到了Math.max进行比较的时候,如果传回来的是null的时候,比较是正常的,但是传undefined的时候却是不正常。代码分析使用比较符号可以发现,null在比较的时候,是当作0处理的。全等与不全等可以发现,在判断是否等于的时候,是不相等的,这也比较符号“逻辑”。undefined的表现如何可以看到,无论怎么比较都是为falseMath.max中的表现这里看得出来,null在这些操作符号中,视作为0。undefined的表现如原创 2020-12-17 19:48:56 · 2758 阅读 · 0 评论 -
raphael.js中拖拽事件在笔记本上不可触发的问题
问题描述最近在改以前的项目代码,问题是通过raphael.js创建出来的svg元素拖动的事件在一些笔记本拖拽不了。一开始还以为是浏览器版本的问题,所以更换浏览器发现还是不行。并且不同笔记本还会出现不同的表现,有些笔记本可以,有些笔记本不可以。问题追踪在这个过程中,不管在哪个平台,页面都没有报错,代码都是正常运行的,这个就需要从raphael.js中找到答案。结果发现项目中引用的是rapheal-min的压缩之后的代码,可读性不强。所以就去找没有压缩过的代码去看。源码阅读一开始还以为源码很难原创 2020-11-27 19:27:52 · 348 阅读 · 0 评论 -
带你快速入门webgl与shader着色器渲染基础
webgl的初见(二维)你是谁?WebGL经常被当成3D API,人们总想“我可以使用WebGL和一些神奇的东西做出炫酷的3D作品”。 事实上WebGL仅仅是一个光栅化引擎,它可以根据你的代码绘制出点,线和三角形。 想要利用WebGL完成更复杂任务,取决于你能否提供合适的代码,组合使用点,线和三角形代替实现。WebGL在电脑的GPU中运行。因此你需要使用能够在GPU上运行的代码。 这样的代码需要提供成对的方法。每对方法中一个叫顶点着色器, 另一个叫片断着色器,并且使用一种和C或C++类似的强类型的语原创 2020-07-29 14:41:44 · 2736 阅读 · 0 评论 -
fabricjs给元素添加事件侦听导致可能的内存泄漏问题
场景由于需要给每一种元素设置一个独立的工具栏,所以就需要给每一个元素设置一个独立的事件去修改对应的工具栏的值比如一个元素的角度显示问题。我们可以给元素添加一个rotate事件,去动态修改工具栏的angle的值。代码: this.gettersTarget.on('rotating', arg => { // 设置角度的angle值 this.angl...原创 2020-04-14 20:07:51 · 2673 阅读 · 1 评论 -
fabricjs 设置背景颜色与文字背景颜色等无法更新页面内容
前提在做毕设的时候,发现fabric.Textbox中有一些属性设置之后,刷新页面无法触发代码演示// this.gettersTarget 是选取的fabric对象// backgroundColor (newValue) { if (this.watcherFlag()) { let {color} = newValue this.ge...原创 2020-04-11 21:04:10 · 3738 阅读 · 5 评论 -
作为参数传入数组之后,使用concat和push不同
作为参数传入数组我们都知道引用类型作为参数,是值传递,所以当你直接给参数指向另外一个数组的时候,是不会影响到原数组的,和作为参数传入的值。我们看看例子来理解function test(arr){ console.log(arr) // [1] arr = [2] console.log(arr) // [2]}var arr1 = [1]test(arr1)console.lo...原创 2019-10-31 21:10:52 · 308 阅读 · 0 评论 -
dom给元素添加多个clasname,dom获取属性名的值
问题一:我们后期如果需要给一个节点新增加一个calssname,如何进行操作呢?var dom = document.getElementById("dom")dom.className = 'classname1 classname2'在类名之间加个空格即可。如果类名需要动态添加如何修改?只需要使用新语法``即可var clasname = 'classname3'var dom...原创 2019-10-17 16:44:15 · 645 阅读 · 0 评论 -
小程序markdown文件解析和代码高亮(五)————请求优化篇
前言距离上次的文章过了1个多月,我们今天来继续优化和更新需求。微信小程序由于审核机制,如果每次需要更新数据的话,就需要重新提交审核和修改,我们能不能吧数据保存到外部,通过修改外部数据达到更新小程序的目的。由于每次换章节都重新请求一个全新的文件,我们是否可以缓存到本地,减少用户请求次数。针对第一个请求我们一开始是使用一个js文件进行保存数据的,所以我们对程序内部只是暴露一个数据接口,所...原创 2019-10-12 19:27:17 · 575 阅读 · 0 评论 -
JavaScript连续赋值的执行顺序问题
引子一道阿里的面试题let a = { n:2}let b = aa.x = a = { l:2}// 说出 a 和 b的输出值我第一次看到这个题目是懵逼的,因为平时没注意=的多次赋值的执行顺序的问题。第一种答案:a => { l:2, x:{ l:2 }}b=> { n : 2}第二种答案:a => { l:2}b=&...原创 2019-08-19 16:04:57 · 2271 阅读 · 5 评论 -
JavaScript Promise使用与实现-----如何使用?
如何使用promise一般来说,我们处理异步事件都时候都是函数里面套函数,但是这样不仅不美观而且可读性非常差,就出现了回调地狱的问题fs.readdir(source, function (err, files) { if (err) { console.log('Error finding files: ' + err) } else { files.forEach(...原创 2019-08-19 18:23:35 · 457 阅读 · 0 评论 -
JavaScript Promise使用与实现-----自己写一个Promise
梳理一下我们现在明白了如何使用Promise了,所以我们需要来根据需求来思考下如何实现一个Promise首先Promise是一个对象,因为我们每次是通过new来实例一个PromisePromise是对象,则代表存在Promise中有一个构造函数,这个构造函数接受一个参数:函数参数这个函数参数已经有了具体规则,就是接收2个参数resolve和rejected,分别代表这成功回调和失败回调...原创 2019-08-26 15:42:07 · 515 阅读 · 0 评论 -
数据结构之排序算法--------JavaScript篇
文章目录排序算法简单排序算法冒泡排序选择排序插入排序高级排序希尔排序快速排序排序算法简单排序算法冒泡排序像可乐里面的气泡一样,每一个数都自行的向上比较,如果符合就停下,不符合就继续冒泡对未排序的元素从头到尾依次与相邻元素比较,如果不符合条件则调换位置,符合则进行下一个元素比较时间复杂度(n2n^2n2),空间复杂度(111),稳定 function bubbleSort (ar...原创 2019-08-14 21:19:26 · 237 阅读 · 0 评论 -
JavaScript 对象的创建与继承——创建篇
对象每一个语言最重要与最基础的数据结构非对象莫属,因为可以通过它实现其他任何数据结构。什么是对象在JS语言中,对象的定义未:无序属性的集合,其属性可以包含基本值、对象或者函数,换句话说,就是对象里包含许多属性,这些属性通过映射可以指向任何类型的值。创建一个对象通过实例Object来创建一个对象var o = new Object()o.name = 'Rex'o.age =...原创 2019-08-28 02:17:15 · 236 阅读 · 0 评论 -
JavaScript 对象的创建与继承——继承篇
文章目录继承篇原型链继承借用构造函数继承继承篇原型链继承当我访问一个对象实例的属性时候,这个就会在实例的本身找是否存在这个属性,如果没有则访问[__proto__]或者prototype所以,如果我们需要实现继承,可以通过修改构造函数的原型来实现,这样每一个实例都可以得到父类的属性和方法。我们直接代码来看下如何实现吧!var Father = function(age) { thi...原创 2019-08-29 02:41:51 · 182 阅读 · 0 评论