![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javascript
文章平均质量分 50
学习js中的问题及过程
gercke
每个人都想把手伸向夜空,去捕捉那属于自己的星星。但却极少的人能正确的知道自己的星星在哪一个位置。
展开
-
深浅拷贝之间的事情
深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的。// 浅拷贝的实现;function shallowCopy(object) { // 只拷贝对象 if (!object || typeof object !== "object") return; // 根据 object 的类型判断是新建一个数组还是对象 let newObject = Array.isArray(object) ? [] : {}; // 遍历 object,并且判断是 object 的原创 2021-02-22 16:35:48 · 114 阅读 · 0 评论 -
js中的节流与防抖
如果实现了dom拖拽功能,但是在绑定拖拽事件的时候发现每当元素稍微移动一点便触发了大量的回调函数,导致浏览器直接卡死,这个时候怎么办?如果给一个按钮绑定了表单提交的post事件,但是用户有些时候在网络情况极差的情况下多次点击按钮造成表单重复提交,如何防止多次提交的发生?为了应对如上场景,便出现了函数防抖和函数节流两个概念,总的来说:这两个方法是在时间轴上控制函数的执行次数。函数防抖(debounce)在事件被触发 n 秒后再执行回调,如果在这 n 秒内事件又被触发,则重新计时。这可以使用在一.原创 2021-02-18 20:36:42 · 180 阅读 · 0 评论 -
可能会造成内存泄漏的操作
什么是内存泄漏内存泄漏可以定义为:应用程序不再需要占用内存的时候,由于某些原因,内存没有被操作系统或可用内存池回收。JavaScript 是一种垃圾回收语言。垃圾回收语言通过周期性地检查先前分配的内存是否可达,帮助开发者管理内存。换言之,垃圾回收语言减轻了“内存仍可用”及“内存仍可达”的问题。两者的区别是微妙而重要的:仅有开发者了解哪些内存在将来仍会使用,而不可达内存通过算法确定和标记,适时被操作系统回收。1.意外的全局变量我们由于使用未声明的变量,而意外的创建了一个全局变量,而使这个变量一直留原创 2021-02-17 22:49:25 · 434 阅读 · 0 评论 -
如何将类数组转化为数组????
在学习转化之前,我们要知道什么是类数组:一个拥有 length 属性和若干索引属性的对象就可以被称为类数组对象常见的类数组对象有 arguments 和 DOM 方法的返回结果,还有一个函数也可以被看作是类数组对象举一个栗子:var array = ['boy','love','q'];var arrayLink = {'1':'boy','2':'love','4':'q',length:5};Array.prototype.join.call(arrayLink,'+');//'+b原创 2021-02-08 23:18:52 · 452 阅读 · 1 评论 -
执行上下文
执行上下文一般分为全局执行上下文和函数执行上下文。全局执行上下文只有一个,它是由浏览器创建的,也就是常说的 window 对象。函数执行上下文可能会有多个,当一个函数被调用时,就会产生一个函数执行上下文。当函数执行时,会创建一个称为执行期上下文的内部对象,函数执行就会产生执行期上下文(独一无二的),执行完一次会销毁一次。每个执行上下文中都会有三个重要的属性:this、变量对象(VO)和 作用域链([[scope]])[[scope]]:存储作用域执行期上下文的集合。所有的执行上下文都会被执行上下文原创 2021-02-01 22:00:41 · 3034 阅读 · 0 评论 -
DOM操作中inner---,outer---的区别
举个例子,比如对于这样一个HTML元素:<div><p>content</p></div>其中他对应的四种属性如下所示:innerHTML:内部HTML<p>content</p>outerHTML:外部HTML<div><p>content</p></div>innerText:内部文本contentouterText:内部文本content上述四个属性不原创 2021-01-31 21:52:07 · 343 阅读 · 0 评论 -
关于js延迟加载的几种方法
1.defer用途:表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕之后再执行。<!DOCTYPE html><html><head> //浏览器会立即下载,但延迟执行。 <script src="defer1.js" defer="defer"></script></head><body><!-- 这里放内容 --></body>&原创 2021-01-28 21:49:07 · 1787 阅读 · 0 评论 -
事件模型的几种形态
1.DOM0它可以在网页中直接定义监听函数,也可以通过 js 属性来指定监听函数。这种方式是所有浏览器都兼容的。每个元素(包括 window 和 document )都有通常小写的事件处理程序属性,比如onclick 。只要把这个属性赋值为一个函数即可:let btn = document.getElementById("myBtn"); btn.onclick = function() { console.log("Clicked");};2.IEIE实现了与DOM类似的方法原创 2021-01-25 20:57:48 · 316 阅读 · 0 评论 -
对象的创建之路~~~布啦布啦
JavaScript 中虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但是这些方法都有一个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。0.对象字面量:var person={ this.name="Sakura", this.age=22, this.job="前端开发", this.sayName=function(){ console.log(this.name); }}//当一个变量被封装在一个对象中时,这个变量就可以称为该对原创 2021-01-22 22:09:57 · 72 阅读 · 0 评论 -
内部函数---toPrimitive()
在JavaScript中,如果想要将对象转换成基本类型时,也就是所谓的拆箱时,会调用toPrimitive()。toPrimitive(input,preferedType?)input是输入的值,即要转换的对象,必选;preferedType是期望转换的基本类型,他可以是字符串,也可以是数字。选填,默认为number;执行过程:如果转换的类型是number,会执行以下步骤:如果input是原始值,直接返回这个值;否则,如果input是对象,调用input.valueOf(),如果原创 2021-01-20 21:07:09 · 653 阅读 · 0 评论 -
NaN的学习
1.typeof NaN 的结果是什么?NaN指的“不是一个数字”(not a number)NaN 是一个“警戒值”(sentinel value,有特殊用途的常规值),用于指出数字类型中的错误情况,即“执行数学运算没有成功,这是失败后返回的结果”。typeof NaN; // "number"NaN 是一个特殊值,它和自身不相等,是唯一一个非自反(自反,reflexive,即 x === x 不成立)的值。而 NaN != NaN为 true。2.isNaN 和 Number.isNaN原创 2020-12-30 23:11:01 · 296 阅读 · 0 评论 -
原型与原型链深度学习
1.函数对象的 prototype 属性我们创建的每一个函数都有一个 prototype 属性,这个属性是一个指针,指向一个对象。该函数实例化的所有对象的__proto__的属性指向这个对象,它是该函数所有实例化对象的原型。//构造函数function Person(){}2.constructor属性当函数创建,prototype 属性指向一个原型对象时,在默认情况下,这个原型对象将会获得一个 constructor 属性,这个属性是一个指针,指向 prototype 所在的函数对象。c原创 2020-12-29 23:29:36 · 312 阅读 · 0 评论 -
js内置对象的分类
我们都知道,JavaScript有3大对象,分别是本地对象、内置对象和宿主对象。本地对象这些引用类型在运行过程中需要通过new来创建所需的实例对象。包含:Object、Array、Date、RegExp、Function、Boolean、Number、String等。内置对象内置对象是本地对象的子集。包含:Global和Math。宿主对象由 ECMAScript 实现的宿主环境提供的对象,包含两大类,一个是宿主提供,一个是自定义类对象。所有非本地对象都属于宿主对象。对于嵌入到网原创 2020-12-28 17:06:46 · 357 阅读 · 0 评论 -
有关this中指向的问题
为什么使用this在常见的编程语言中,几乎都有this这个关键字(Objective-C中使用的是self),但是JavaScript中的this和常见的面向对象语言中的this不太一样:常见面向对象的编程语言中,比如Java、C++、Swift、Dart等等一系列语言中,this通常只会出现在类的方法中。也就是你需要有一个类,类中的方法(特别是实例方法)中,this代表的是当前调用对象。但是JavaScript中的this更加灵活,无论是它出现的位置还是它代表的含义。使用this有什么意义呢原创 2020-10-10 23:25:50 · 207 阅读 · 0 评论 -
正则表达式
正则表达式(RegExp)1.作用:匹配特殊字符或有特殊搭配原则的字符的最佳选择2.两种创建方式直接量var reg = /abc/属性;new RegExp();var reg = new RegExp(“abc”,“属性”);3.属性:i:忽视大小写g:全局匹配m:多行匹配4.方法reg.test(); //找在str中有没有相同片段,返回true ...原创 2019-11-01 21:13:43 · 66 阅读 · 0 评论 -
事件
事件一、如何绑定事件处理函数1.ele.onxxx = function(){}兼容性很好,但是一个元素同一事件只能出现一次基本等同于写在HTML行间上程序this指向dom元素本身//eg: div.onclick = function (){ console.log('a');}1 <div style="width: 100px; height:10...原创 2019-11-01 21:11:22 · 81 阅读 · 0 评论 -
DOM
try catch在try 里面的代码发生错误,不会执行错误后的try里面的代码,但是会执行try外面的代码如果try 里面没有错误,不会执行catch中的代码 try{ console.log('a'); console.log(b);//出现错误,之后的代码都不执行 console.log('c');//不执行 }catch(e){ console...原创 2019-11-01 20:43:19 · 121 阅读 · 0 评论 -
继承的方式
继承方式一、原型链式1. 基本思想:利用原型链实现继承2. 实现<script> Plane.prototype.fly = function() { console.log('fly'); } function Plane(name){ this.name = name||'普通飞机'; this.color = ...原创 2019-08-10 19:40:22 · 99 阅读 · 0 评论 -
作用域和闭包初识
一、预编译如果变量未经声明就赋值,此变量为全局对象所有。 a = 10; --> window.a = 10;一切声明的全局变量,全部是window的属性 .var b = 243; --> window.b = 243;预编译发生在函数执行的前一刻四部曲:先创建AO对象找形参和变量声明,将变量和形参作为AO属性名,值为undefined实参形参统一函数体中找...原创 2019-06-22 22:04:53 · 102 阅读 · 0 评论 -
javascript基本语句
基本语句一、if 语句语法:如果条件成立,则执行 statement1,否则执行statement2 if (contition){ statement1 }else{ statement2 }同时可以有多个条件,将中间的else换成else if,最后的是else举个栗子 if (i <10 ){ alert("min"); } els...原创 2019-06-15 17:21:29 · 252 阅读 · 0 评论 -
javascript操作符和数据类型
一、操作符原创 2019-06-07 16:39:11 · 270 阅读 · 0 评论 -
javascript初学
javascript初学一、浏览器二、变量与常量1.变量一、浏览器1.现在互联网中的主流浏览器主要有 chrom : Webkit 内核 firefox : Gecko 内核 opera : presto 内核 IE : Trident 内核 2.浏览器兼容在使用一些属性时,为了适应浏览器需要在前面加上一些适配举个例子谷歌浏览器下:- webkit - border - r...原创 2019-06-01 14:52:41 · 102 阅读 · 0 评论