Javascript

JS堆栈与拷贝

来源 http://www.cnblogs.com/jingwhale/p/4884759.html一.堆栈的定义1.栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。结论:后进先出(LastInFirstOut),简称为LIFO线性表。栈的应用有:数制转换,语法词法分析,...
代码星球·2020-07-29

JSON字符串和Javascript对象字面量

 JSON是基于Javascript语法的一个子集而创建的,特别是对象和数组字面量语法。正是由于JSON的这种特殊来历,导致很多Javascript程序员往往会混淆Javascript对象字面量和JSON。JSON是作为XML的替代品而出现的,它本身是一种跨平台的数据表示标准,是纯文本字符串,不局限于任何编程...

详细图解jQuery对象,以及如何扩展jQuery插件

 早几年学习前端,大家都非常热衷于研究jQuery源码。我还记得当初从jQuery源码中学到一星半点应用技巧的时候常会有一种发自内心的惊叹,“原来JavaScript居然可以这样用!”虽然随着前端的发展,另外几种前端框架的崛起,jQuery慢慢变得不再是必须。因此大家对于jQuery的...

JS详细图解全方位解读this

 对于this指向的理解中,有这样一种说法:谁调用它,this就指向谁。在我刚开始学习this的时候,我是非常相信这句话的。因为在一些情况下,这样理解也还算说得通。可是我常常会在开发中遇到一些不一样的情况,一个由于this的错误调用,可以让我懵逼一整天。那个时候我也查资料,在群里问大神,可是我仍然搞不清楚&l...

JS详细图解作用域链与闭包

 攻克闭包难题初学JavaScript的时候,我在学习闭包上,走了很多弯路。而这次重新回过头来对基础知识进行梳理,要讲清楚闭包,也是一个非常大的挑战。闭包有多重要?如果你是初入前端的朋友,我没有办法直观的告诉你闭包在实际开发中的无处不在,但是我可以告诉你,前端面试,必问闭包。面试官们常常用对闭包的了解程度来判...

JS变量对象详解

 开年之后工作热情一直不是很高,这几天一直处于消极怠工状态。早上不想起床,起床了不想上班。明明放假之前工作热情还一直很高,一直心心念念的想把小程序项目怼出来,结果休假回来之后画风完全不一样了。我感觉自己得了严重了节后综合征。还好撸了几篇文章,勉强表示这一周的时间没有完全浪费。这篇文章要给大家介绍的是变量对象。...
代码星球·2020-07-29

JS内存空间详细图解

 变量对象与堆内存vara=20;varb='abc';varc=true;vard={m:20}因为JavaScript具有自动垃圾回收机制,所以对于前端开发来说,内存空间并不是一个经常被提及的概念,很容易被大家忽视。特别是很多不是计算机专业的朋友在进入到前端之后,会对内存空间的认知比较模糊,甚至有些人干脆...

JS执行上下文(执行环境)详细图解

 先随便放张图我们在JS学习初期或者面试的时候常常会遇到考核变量提升的思考题。比如先来一个简单一点的。console.log(a);//这里会打印出什么?vara=20;暂时先不管这个例子,我们先引入一个JavaScript中最基础,但同时也是最重要的一个概念执行上下文(ExecutionContext)。每...

loading加载动画效果js实现

<style>.box{width:400px;padding:20px;border:40pxsolid#a0b3d6;background-color:#eee;overflow:hidden;}.loading{height:100%;background:url(images/loading.gif...

JS实现缓动动画效果

原理如下:假设要从数值A变化到数值B,如果是线性运动,则每次移动距离是一样;如果是缓动,每次移动距离不一样。那如何才能不一样呢?很简单,按比例移动就可以。例如:每次移动剩余距离的一半。对吧,超容易理解的。比方说:你和初恋之间距离是64,每秒移动一半,则,你们之间的距离下一秒就是32,再下一秒就是16,然后8,然后4,然...

vue.js+boostrap最佳实践

最近忙里偷闲学了一下vue.js,同时也复习了一下boostrap,发现这两种东西如果同时运用到一起,可以发挥很强大的作用,boostrap优雅的样式和丰富的组件使得页面开发变得更美观和更容易,同时vue.js又是可以绑定model和view(这个相当于MVC中的,M和V之间的关系),使得对数据变换的操作变得更加的简易...
代码星球·2020-07-29

js变量和函数声明的提升

函数声明和变量声明总是会被解释器悄悄地被“提升”到方法体的最顶部请注意,变量赋值并没有被提升,只是声明被提升了。函数的声明比变量的声明具有高的优先级。 下面的程序是什么结果?var foo = 1;  function bar...

JS运算符问题

以下代码是否报错,如果不报错输出什么,为什么varx=!!"Hello"+(!"world",!!"fromhere!!");alert(x);不会报错,输出为2;原因:varx=!!"Hello"+(!"world",!!"fromhere!!");因为这三个字符串都有取反运算符!,所以可以转化为布尔值,式子可以变形...
代码星球·2020-07-29

JS 对象引用问题

vara={n:1};varb=a;a={n:2};a.x=a;console.log(a.x);console.log(b.x);vara={n:1};varb=a;a.x=a={n:2};console.log(a.x);console.log(b.x);这两个问题主要理解两点就很简单了。对象是引用类型,改变赋值只...
代码星球·2020-07-29

理解JSON对象:JSON.parse、 JSON.stringify

JSON就是一个有特殊规则的字符串,按照这个规则我们就可以把这个字符串解析成JS对象。JSON是设计成描述数据交换格式的,他也有自己的语法,这个语法是JavaScript的一个子集。{"prop":"val"}这样的声明有可能是JavaScript对象字面量也有可能是JSON字符串,取决于什么上下文使用它,如果是用在s...