![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaScript
Crimaster·W
这个作者很懒,什么都没留下…
展开
-
JS实现点击复制目标内容
在实际应用中,我们经常看到这样一种效果:就是单击一个按钮,就将某个区域内的内容,复制到了剪切板中。其实这个功能实现起来也不难,核心就是用到了window子对象clipboardData的一个方法:setData(),直接上代码:<div id="copyTarget"> 我是你要复制的目标</div><button id="btnCopy">点...原创 2019-04-26 17:59:08 · 3739 阅读 · 3 评论 -
THREEJS - 自定义曲线绘制
今天来给大家分享一个自定义曲线绘制的demo,这个demo主要是结合鼠标在三维空间点击的焦点获取、new THREE.CatmullRomCurve3()对象等。我们需要在三维的scene内,监听鼠标的点击事件,绘制曲线的前提,需要一个平面,所以我们先在三维场景构建一个看不见的虚拟平面:// 创建平面let normal = new THREE.Vector3(0, 1, 0); // 构建向量let VirtualPlane = new THREE.Plane(normal, 0); // 虚原创 2021-10-21 15:14:43 · 1675 阅读 · 2 评论 -
定时器的清除
定时器是我们在开发过程中用到比较多的,为了减少浏览器的加载进程以及内存的占用,我们通常会在使用了定时器后,手动清除定时器,达到释放内存的效果,通常的办法是:let timer = = setTimeout(() => { console.log(1);}, 1000);clearTimeout(timer);在创建定时器的时候做好声明,然后清楚掉定时器,一两个还好,但是如果一个场景内存在多个定时器,例如在我们做动画的时候,这时候如果一个个的手动清除就太过于麻烦,所以我们可以用下面这个便原创 2021-03-04 20:12:07 · 6113 阅读 · 1 评论 -
Gulp的压缩处理
大家好,我又回来了!!!!!!断更了一年多,今日起,我将继续发布新的博客,后续的文章会开辟新的技术领域以及新的实际开发工具,希望大家继续关注,有不足之处,还请多多指教与交流。今天,我将以一个实际开发工具 —— gulp的压缩打包,开启2021新年的大门,大家拭目以待吧。好了,言归正传,在实际开发中,我们经常会碰到JS和CSS文件混合压缩的情况,有很多人都会直接使用网上的压缩工具直接压缩,下面我给大家带来一种便捷的压缩方法:Gulp。1.打包前准备 需要安装 node 和 npm。原创 2021-02-01 19:58:02 · 499 阅读 · 0 评论 -
JavaScript:异步执行机制
使用JavaScript的开发者都知道,JS的异步执行机制在JS中占据着重要的地位,主要就是体现在回调函数以及事件方面,最近看了很多文章,将自己的一些感受和理解跟各位分享一下。前面的博客中也有提到,JavaScript是一个单线程执行机制的程序,这样虽然说避免了并发访问的问题,但是这样也致使JS中的异步执行不能按照传统的多线程方式执行异步,JS所有的异步的实现需要插到同一个队列中,从而依次在主...原创 2019-12-17 16:30:08 · 719 阅读 · 0 评论 -
JavaScript:执行机制
在说本章主要讨论的问题之前,先来讲述一下函数中的try/catch/finally分别代表什么:try:语句测试代码块的错误;catch:只有当try中的代码块发生错误的时候,才会执行这部分的代码,参数err记录了try内代码块的错误信息;finally:不管有无异常都会执行内部的代码介绍完几个关键字代表的含义,我们接着来思考两个问题:try,catch,finally中r...原创 2019-12-03 15:49:31 · 198 阅读 · 0 评论 -
JavaScript:模块化及模块化规范
什么是JavaScript的模块化?模块化模块化,那就是先有模块,模块是什么?模块就是将一个复杂的程序按照一定的规则拆分并单独封装成一个块或者文件,每一个块内都有自己的内部数据和方法,并且会向外暴露一些接口或方法与其它模块之间相互联系。模块化就是程序在运行编码过程中,就是按照每个模块一个一个逐一编码,最后形成一整个项目。当然了,这些许许多多的模块不能胡乱的编写和使用,那么就需要一定的规范了,下面给...原创 2019-11-28 17:22:52 · 420 阅读 · 0 评论 -
JavaScript:堆栈溢出&&内存泄漏
在JavaScript中,会有听到两个概念:堆栈溢出和内存泄漏,这两种机制在开发中遇到的不多,但是一旦碰到就很头疼。下面就分别来讲述一下二者的概念,触发原因以及解决办法。堆栈溢出:什么是堆栈溢出?我们知道JS中的数据存储分为栈和堆,程序代码运行都需要一定的计算存储空间,就是栈了,栈遵循先进后出的原则,所以程序从栈底开始运行计算,程序内部函数的调用以及返回会不停的执行进栈和出栈的操作,栈内被所...原创 2019-11-26 17:51:23 · 4251 阅读 · 0 评论 -
JavaScript:闭包
在说JavaScript中闭包概念之前,我们先来了解一下作用域和变量生命周期的问题。作用域在前面的博客中有提到,大家可以点击查看一下,关于变量的生命周期,什么是生命周期?也就是变量从创建到销毁的一个过程。对于全局变量,它的生命周期是永久的,除非我们在开发中主动销毁这个变量,而在函数中的局部变量,当退出该函数时,这个函数内的局部变量回随着函数的结束而被销毁。了解了作用域和生命周期的基本概念后,我们来...原创 2019-11-22 14:15:53 · 273 阅读 · 0 评论 -
JavaScript:执行上下文&&执行上下文栈
在JavaScript概念中,有一个概念比较难以理解,它就是执行上下文和执行栈。最近在网上查阅了很多资料,现在把我的一些理解写出来,希望对各位有些帮助。一、执行上下文什么是执行上下文?是不是我们平时写文章的时候的那个上下文关系?答案是否定的,在JavaScript中的执行上下文指的是JS代码被解析和运行时所处的环境,被称之为JavaScript中的执行上下文,换句话来说,我们在实际开发中写...原创 2019-11-20 11:55:41 · 418 阅读 · 0 评论 -
JavaScript:变量提升&&作用域
作用域是JavaScript中听上去感觉很简单,其实比较麻烦的一个特性,什么是作用域?我看书籍有一个相对的官方解释:作用域(scope,或译有效范围)就是变量和函数的可访问范围,即作用域控制着变量和函数的可见性和生命周期,是在代码运行时中某些特定部分或代码块中变量,函数和对象的可访问性,也就是说作用域决定了代码区块中变量等其它的可见性或可访问性。我们先看一个简单的例子:function fu...原创 2019-11-14 14:22:34 · 278 阅读 · 0 评论 -
浅谈我对原型链的理解。。。
说到原型链,首先我们要想到三个东西构造函数-实例对象-原型对象。我们先说说构造函数,之前我们通常创建对象就是var一个对象出来,例如:var person = { name: 'zhangsan', age: 18, sayName: function () { console.log(this.name) }}这样创建对象是最简单粗暴的,但是,如果我想创建...原创 2019-04-15 16:17:39 · 1092 阅读 · 1 评论 -
箭头函数:this的指向问题
关于typescript中函数的定义,有提到过它的定义方式(详见:函数的定义及特性),当时提到typescript中的'=>'不是ES6中的箭头函数的意思。什么是ES6的箭头函数?代码如下:var fnc = v => v;第一次看到这个,你肯定心里在想:what ' s this!!!!!!!!!!!!!解释一下,上述代码表现形式就相当于:var fnc = func...原创 2019-10-29 17:50:59 · 848 阅读 · 0 评论 -
JavaScript:数据的存储
在JavaScript中,变量基本上分为两大类:值类型(也称为基本类型)和引用类型,当然在ES6中新提出了一种新的类型,就是Symbol类型,在这里我们主要说一下值类型和引用类型:值类型:number(数值类型),string(字符串类型),Boolean(布尔类型),null,undefined; 引用类型:object(对象),array(数组),function(函数)先看下对于值类...原创 2019-10-31 11:29:37 · 651 阅读 · 0 评论 -
Symbol()类型的定义及特点
前文我们提到了JavaScript中的两种数据类型的存储方式,在说到数据类型的时候,提到了ES6新增的一种数据类型:Symbol类型,这个类型的功能类似于一种标识唯一性的ID。Symbol类型属于JavaScript中两大数据类型中的基本数据类型,接下来我们就介绍下Symbol类型的一些特点。首先就是创建一个Symbol实例,一般是用以下两种方式:var a = Symbol(); ...原创 2019-11-05 10:48:01 · 4641 阅读 · 0 评论 -
JavaScript:数据类型判断的方法
在JavaScript的基本数据类型中,还有两个特殊的类型:null和undefined,两者在布尔类型下都转义为false,看以下代码:console.log(null == undefined); // trueconsole.log(null === undefined); // false我们利用双等来判断null和undefined,得到的结果是true,是因为他们俩布尔值...原创 2019-11-05 14:11:41 · 230 阅读 · 0 评论 -
JavaScript:原型设计模式
在JavaScript中有很多设计模式,例如工厂模式、模块模式、发布订阅模式、单例模式等等,这里主要说的是一种比较重要的设计模式---原型设计模式。所谓原型设计模式,我参考了网上比较多的解释,这种设计模式就是创建一个共享的原型,并通过拷贝这些原型创建新的对象。用于创建重复的对象,这种类型的设计模式属于创建型模式,它提供了一种创建对象的不错选择。那么如何实现原型模式?答案就是原型链,我们可以通过...原创 2019-11-07 14:52:14 · 273 阅读 · 0 评论 -
JavaScript:instanceof 实现原理
前文我们有说数据类型的判断,中间提到了一种判断方式就是instanceof,这里我们来详解介绍下关于instanceof具体的实现原理。语法:object in constructor,具体含义就是检测对象object的原型链中是否存在一个构造函数的prototype属性。例如之前提到的例子:123 instanceof Number, //false'dsfsf' instanceo...原创 2019-11-08 16:42:42 · 886 阅读 · 2 评论 -
JavaScript:继承
在JavaScript中,有很多地方都涉及到继承的使用,这样不仅可以合理的利用数据,而且可以结合实际开发情况衍生一些特定的属性,我们先定义一个类:function Person(name) { // 属性 this.name = name || 'zhangsan'; // 实例方法 this.sayName = function () { c...原创 2019-11-11 11:31:28 · 151 阅读 · 0 评论 -
JavaScript:new关键字的执行过程
在使用JavaScript开发过程中,经常会用到new关键字,从字面意思来看,就是新建一个对象,那么在我们看不见的数据之间的操作到底发生了什么呢?使用new的这个过程执行了哪些操作?看下面的例子:function Person(name) { this.name = name;}let zhangsan = new Person('张三');上述代码中new了一个Person...原创 2019-11-11 14:42:43 · 2741 阅读 · 4 评论 -
JavaScript:class类的实现方式及特点
在JavaScript开发中,我们通常会使用构造函数的方式来是实现实例对象的生成,代码如下:function People(name, age) { this.name = name; this.age = age;}People.prototype.say = function () { console.log('hello');}var tom = new...原创 2019-11-12 15:11:04 · 747 阅读 · 0 评论