
javascript
文章平均质量分 73
雨中畅游
基础和深入决定能走多远和多高。
展开
-
[[scopes]]结合实际分析
上一篇文章说到作用域链,其实作用域链的本质是一个指向变量对象的指针列表,它只引用但不实际包含变量对象。到底是怎样运作得呢?[[scopes]]分析那么自己就在思考,上面说的都是理论知识,内部访问外部,在代码上是不是有上面地方存储了,好奇的我打印了下一个匿名函数如下:可以看到,函数里面有个[[Scopes]],是一个数组对象,现在里面有个全局对象。这就是本章内容的主角了。scopes里面会存在几种类型:Global,Closure,Script,Block,Closure后面那个就是对应的原创 2020-09-21 11:20:47 · 1655 阅读 · 3 评论 -
js项目小问题
由于在逐步的使用js中,有一些小问题,也是踩过的坑,或者当时不明确,因此记录下来。每篇文章5个问题1、项目中遇到innerText等这个问题很纳闷,起因是自己帮处理一个xml读取文本,转化为json的问题。本来很简单,但是读取文本都知道innerHTML innerText textContent。因为要处理文本,转化为json,但是使用JSON.parse需要严格遵守JSON格式规范,当然使用这...原创 2018-05-16 15:37:13 · 306 阅读 · 0 评论 -
javascript判断空对象
便于查找,特此记录,利己利人。简单来说,总共有四种方法:方法一:JSON.Stringifyvar obj = {}JSON.Stringify(obj) === '{}'返回值:true (如果对象obj不为空对象,返回false)方法二:jquery的方法$.isEmptyObjectvar obj = {}$.isEmptyObject(obj)返回...原创 2018-09-27 17:56:26 · 3751 阅读 · 0 评论 -
javascript——垃圾回收
JavaScript具有自动垃圾收集机制,开发人员不必关心内存分配和回收问题。垃圾回收机制通常的两种策略:1、标记清除一句话总结:对于不需要的变量,给一个标记,当下次垃圾收集器执行的时候,释放其内存。 具体的做法就是,离开作用域的值将被自动标记为可以回收。因为从逻辑上来讲,永远不能释放进入环境的变量所占用的内存,只要执行流进入相应的环境,就可能会用到它们。 ...原创 2018-10-07 22:46:19 · 511 阅读 · 0 评论 -
javascript——函数
要说javascript中最有意思的东西,那莫过于函数了。因为函数实际上也是对象。每个函数都是Function类型的实例,而且同其他引用类型一样具有属性和方法。函数是对象,那么函数名其实就是指向函数对象的指针。函数没有重载重载:函数签名不同,函数名相同。之所以avascript没有重载,其实和上面标红的那句话很有关系。而且ECMAScript函数没有签名。因为参数其实就是arguments...原创 2018-10-08 16:56:58 · 217 阅读 · 0 评论 -
谈谈 HTTP Cookie
初识cookieHTTP Cookie通常直接叫做cookie,是小型的纯文本文件cookie指某些网站为了辨别用户身份而存储在用户本地终端上的数据(维基百科)服务器对任意HTTP请求发送Set-Cookie HTTP头作为响应的一部分。浏览器会存储这样的会话信息,并在这之后,通过为每个请求添加Cookie HTTP头部将信息发送回服务器(感觉就像是服务器首先给每个人发一个身份卡,...原创 2018-10-15 15:54:04 · 379 阅读 · 0 评论 -
javascript——闭包
闭包的原理特性闭包:是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式:在一个函数内部创建另一个函数分析上面的话,划重点:闭包是一个函数,函数,函数。重要事情说三遍。然后就是它有特权,可以访问另一个函数作用域的变量。其实这个另一个函数就是外部函数。之前一篇文章讲到了作用域和作用域链。https://blog.youkuaiyun.com/viewyu12345/article/de...原创 2018-10-09 14:29:59 · 218 阅读 · 0 评论 -
Web存储机制——localStorage、sessionStorage
上一篇文章分析了cookie,也提到了使用cookie的缺陷。正因如此,出现了HTML5 的 Web Storage。出现的原因:就是看不惯数据在客户端和服务器端传来传去的,多耗能啊~~~Web Storage规范包含了两种对象定义:sessionStorage 和 globalStorage,这两个对象在支持的浏览器中都是以windows对象属性的形式存在的。IE8+与cookie的...原创 2018-10-16 19:08:11 · 459 阅读 · 0 评论 -
javascript——属性
ECMAScript 中有两种属性:数据属性和访问器属性。数据属性数据属性有4个描述其行为的特性:属性都是用两个方括号定义的,比如上面的value,其实是[[value]]。[[Configurable]]为false不能通过delete删除其属性。例子:var person = { name: "pyc" };比如上面这段代码,[[value]]特性将被设置为...原创 2018-10-10 13:46:56 · 539 阅读 · 0 评论 -
javascript——事件对比分析
事件流事件流分为冒泡和捕获。冒泡:即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。IE事件流就叫做事件冒泡捕获:事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点应该最后接收到事件。"DOM2级事件"规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段。事件有哪些,之间的区别是什么呢...原创 2018-10-20 11:38:10 · 392 阅读 · 0 评论 -
5个技巧写更好的JavaScript条件语句
当我们在使用JavaScript,条件语句少不了的,下面给出5个技巧让我们写出更好的条件语句。1、对于多个条件使用Array.includes方法下面来看一个例子。// 条件function test(fruit) { if (fruit == 'apple' || fruit == 'strawberry') { console.log('red'); }}...翻译 2018-10-29 23:26:35 · 340 阅读 · 0 评论 -
“魔鬼”eval
初识eval()eval()函数在很多语言中都有,这仅仅讨论在JavaScript中的情况。由于eval()函数可以将任意字符串当做一个JavaScript代码来执行,所以可谓是特别强大了,经常的使用情况就是,函数名变化,来调用函数之类的。但是为什么说是魔鬼:如果你用 eval() 运行的字符串代码被恶意方(不怀好意的人)操控修改,您最终可能会在您的网页/扩展程序的权限下,在用户计算...原创 2018-11-05 22:56:25 · 669 阅读 · 0 评论 -
ES6规范的promise
差不多一个月没写博客了,现在来开启新的一年第一篇博客。今天来说说es6规范的promise属性,始终坚信,技术永无止境,无论做什么,都得从底层做起,基础很重要,一步一步,做大做强是吧,不废话了。在技术领域,永远明白的一个真理,需求推动发展,都是为了更加方便,所谓存在即合理。学习技术也有几个问题时刻问自己:这个东西是个啥?用来干啥?怎么用? promise存在的意义在java...原创 2019-01-18 16:40:48 · 364 阅读 · 0 评论 -
javascript——基本概念
1、javascript区分大小写,标识符,注释等等不在说明。数据类型javascript中有5种简单的数据类型,也称为基本数据类型:Undefined、Null、Boolean、Number、String,还有一种复杂的数据类型,Object。typeof用于检测给定变量的数据类型,是一个操作符不是函数。虽然函数在ECMAScript中是对象,不是一种数据类型,然而函数确实有一些特殊的属性,因此...原创 2018-03-22 09:44:52 · 249 阅读 · 0 评论 -
lable语句
label语句,一般刚刚接触javascript都有点懵,这是什么?这里说的是javascript里面的label语句,其实这并不是深奥的东西,只是接触少而已,但相信一切存在必有存在的道理label语法:label: statementstart: for (var i = 0; i < count; i++) { alert(i);}1、label语句一般与for循环一起用,brea...原创 2018-02-26 16:03:21 · 408 阅读 · 0 评论 -
javascript数组(三)迭代+归并
Javascript学习系列文章,一方面作为学习记录,另一方面日后可以参考,所有内容均为个人的学习理解迭代方法:1、every()2、filter()3、forEach()4、map()5、some()其中every()和some()其实可以理解成逻辑与和逻辑或操作;归并方法:reduce():从数组第一项开始reduceRight():从数组最后一项开始var values = [1,2,3,4...原创 2018-02-27 15:52:43 · 180 阅读 · 0 评论 -
javascript数组(一)
Javascript学习系列文章,一方面作为学习记录,另一方面日后可以参考,所有内容均为个人的学习理解数组简介:1、数组的每一项可以保存任何类型的数据2、创建数组:new Array() ,可带参数,数字表示长度,字符等表示内容,或者直接 []3、数组的length属性不只是只读的,可以通过改变length的大小,来向数组的末尾增加或者删除项,数组的最后一项始终是length-1数组检测:1、当只...转载 2018-03-01 10:18:42 · 187 阅读 · 0 评论 -
javascript数组(二)方法
Javascript学习系列文章,一方面作为学习记录,另一方面日后可以参考,所有内容均为个人的学习理解栈方法:(后进先出)操作数组最后一项。push() :推入 ,将传入的参数添加到数组末尾,如果是数组push,那么就返回是二维数组了。[,,[]]。要想一个个添加,参照concat()参数:任意数量返回值: 修改后数组的长度pop() :弹出,移出数组末尾最后一项,length减1参数: 无返回值...原创 2018-03-01 11:04:22 · 227 阅读 · 0 评论 -
javascript字符
Javascript学习系列文章,一方面作为学习记录,另一方面日后可以参考,所有内容均为个人的学习理解字符串简介:1、String类型,javascript引用类型之一。字符串,单引号双引号都可以。但是一单引号开始就的以单引号结束'hello world" //错误/2、字符串一旦创建,值不能改变。要改变其实是销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量3、null undefin...原创 2018-03-01 16:40:08 · 253 阅读 · 0 评论 -
javascript数值
Javascript学习系列文章,一方面作为学习记录,另一方面日后可以参考,所有内容均为个人的学习理解数值简介(Number类型):1、八进制 : 0 以0开头的数值解析为八进制,但若后面字面数值操作范围,前面0被忽略。十六进制: 0x 后面的字母可小写可大写2、浮点数。由于保存的空间是整数值的两倍,所以会不失时机地转化为整数值。var floatNnum = 10.0; //解析为103、科学...原创 2018-03-02 14:27:05 · 476 阅读 · 0 评论 -
简单明了区分escape、encodeURI和encodeURIComponent
一、前言讲这3个方法区别的文章太多了,但是大部分写的都很绕。本文试图从实践角度去讲这3个方法。 二、escape和它们不是同一类简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。编码之后的效果是%XX或者%uXXXX这种形式。其中 ASCII字母、数字、@*/+ ,这几个字符不会被编码,其余的都会。最关键的是,当你需要对URL编码时,请...转载 2018-02-24 11:04:04 · 262 阅读 · 0 评论 -
javascript——基本类型和引用类型区分
ECMAScript变量可能包含两种不同的数据类型的值:基本类型值和引用类型值。基本类型值表示简单的数据段,而引用类型值表示那些可能由多个值构成的对象。基本数据类型是按值访问,引用类型,当复制保存着对象的某个变量时,操作的是对象的引用。但在为对象添加属性的时候,操作的是实际的对象,反正,想象,对象就是放在某个堆堆里面的。区别 1、保存方式不同:引用类型可以增加或者删除属性和方法...原创 2018-03-22 14:21:37 · 263 阅读 · 0 评论 -
javascript——执行环境和作用域
先来明白几个概念:执行环境:有时候也叫环境,定义了变量和函数有权访问的其它数据,决定了他们各自的行为。每一个指定环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。全局执行环境是最外围的一个执行环境,在Web浏览器中,被认为是window对象,每个函数都有自己的执行环境,每当执行流进入一个函数的时候,函数的环境将会被推入一个栈中,函数执行完成后,栈就被弹出,理解栈...原创 2018-03-22 20:28:43 · 499 阅读 · 0 评论 -
javascript中的this
this值在JavaScript中也比较关键,不同的场景代表不同的值。理解是关键全局上下文this对象直接指向全局对象,在浏览器中也就是window对象。这个比较好理解函数上下文在函数中,this对象的情况就比较多了:1、直接调用函数this指向window对象,但是在严格模式下,返回undefined2、当函数作为一个对象的方法来调用的...原创 2018-03-22 23:28:21 · 174 阅读 · 0 评论 -
javascript原型——__proto_和prototype
原型,原型对象,__proto__,prototype这些概念,好烧脑,不过且看慢慢来原型原型链,原型对象研究首先,正规的,我们创建个构造函数看看打印看看:person是一个对象,这个对象中只有一个属性,就是__proto__。由此可以知道,构造函数创建对象,会直接给实例加一个__proto__属性。这个属性里面有两个属性,constructor指向构造函数,看到了吧。__...原创 2018-03-23 11:56:37 · 344 阅读 · 0 评论 -
HTML中Javascript脚本的加载和执行
抛出问题:为什么我们建议把script标签放在</body>之前而不是head里面呢?为什么有时候我们访问DOM却访问不到呢?javascript代码是怎样的执行顺序?有没有什么操作是可以影响它的执行顺序?这一切的答案都可以从本文中获取,也就是要说的脚本的执行顺序问题。您且往下看。理论支持:要解决上面的问题,我们需要明白在html中javascript的加载和执行顺序问题,先了解几...原创 2018-03-21 14:13:20 · 27768 阅读 · 0 评论 -
javascript——百变创建对象
首先一看到创建对象,马上想到的就是对象字面量创建对象 var obj = {}; 或者使用Object构造函数创建对象,var obj = new Object(); 没错。但是为什么还要讲创建对象呢?因为这个两种方式虽然能够创建对象,但是,当我们创建对象很多地方相同怎么办,这会产生很多重复代码,一想到重复代码,脑子就应该浮现的解决办法:函数!这里一共有7中创建对象的模式:工程模式 构...原创 2018-03-31 12:30:33 · 388 阅读 · 1 评论 -
onclick与addEventListener区别
这次做项目遇到了这个问题,本来习惯性的每次都写的是addEventListener绑定click事件。但是当用addEventListener绑定了多次click事件的时候,引发了我的思考,这两者有区别吗?具体的事件分析可查看另一篇文章结论:1.onclick事件在同一时间只能指向唯一对象2.addEventListener给一个事件注册多个listener3.addEventLi...原创 2018-01-26 13:17:39 · 14585 阅读 · 2 评论