深入理解javascript
对javascript中的关键性语法进行深入透彻的讲解,图文并茂,争取让更多的人更加深入的了解javascript这个编程语言的特色。
布瑞泽的童话
这个作者很懒,什么都没留下…
展开
-
javascript异步编程实例
异步函数这个术语有点名不副实,调用一个函数后,程序只在该函数返回后才能继续。Javascript程序员如果称一个函数为异步的,其意思就是这个函数会导致将来再运行另一个函数,后者取自于事件队列。如果后面这个函数是作为参数传递给前者的,则称其为回调函数。callback回调函数是异步编程最基本的方式。采用这种方式,我们把同步操作变成了异步操作,主函数不会堵塞程序运行,相当于先执行程序的主要逻辑,将耗时的原创 2015-10-23 15:37:11 · 2271 阅读 · 0 评论 -
javascript多线程
最近在项目中用到了多线程编程,所以就此处深入产开学习。众所周知,javascript是单线程的语言,单线程意味着程序会按照指定的顺序按部就班的执行下去,遇到堵塞也无法越过。我们简单地看看下面这个例子:function f1(){ console.time('time span');}function f2(){ console.timeEnd('time span');}set原创 2015-07-14 14:09:44 · 8358 阅读 · 3 评论 -
javascript跨域方法
本文主要介绍几种常见的javascript跨域通信方法。首先讲解一下JSONP。JSONPJSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的 元素是一个例外。利用原创 2015-05-21 21:45:09 · 1432 阅读 · 2 评论 -
深入理解javascript之IIFE
IIFE的全称是Immediately-invoked Function Expression,立即执行函数表达式。在讲IIEF之前,我们首先需要区分函数表达式和函数声明。var test = function(){};这个叫做函数表达式。function test(){};这个叫做函数声明。函数表达式中的函数可以为匿名函数,也可以有函数名,但是该函数实际上不能直接使用,只能通过表达式左边的变量te原创 2015-10-28 20:54:04 · 3491 阅读 · 5 评论 -
深入理解javascript之继承
继承是面向对象编程的一个基础。javascript中的继承,主要是通过原型链来实现的。原型链继承实现原型链继承的基本模式代码如下:/** * @description: 原型继承基本模式 * @author: 刘放 * @date: 2015/10/26 15:52 */ function Father(){ this.name = "刘放"; }原创 2015-10-27 08:56:06 · 1608 阅读 · 0 评论 -
深入理解javascript之设计模式
设计模式设计模式是命名、抽象和识别对可重用的面向对象设计有用的的通用设计结构。设计模式确定类和他们的实体、他们的角色和协作、还有他们的责任分配。每一个设计模式都聚焦于一个面向对象的设计难题或问题。它描述了在其它设计的约束下它能否使用,使用它后的后果和得失。因为我们必须最终实现我们的设计模式,所以每个设计模式都提供了例子,代码来对实现进行阐释.虽然设计模式被描述为面向对象的设计,它们基于原创 2015-06-30 08:03:30 · 4302 阅读 · 0 评论 -
深入理解javascript之高级定时器
setTimeout()和setInterval()可以用来创建定时器,其基本的用法这里就不再做介绍了。这里主要介绍一下javascript的代码队列。在javascript中没有任何代码是立即执行的,一旦进程空闲则尽快执行。所以说定时器中设置的时间并不代表执行时间就一定相符,而是代表代码会在指定时间间隔后加入到队列中进行等待。如果在这个时间点上,队列中没有其他东西,那么这段代码就会被执行,表面上看原创 2015-12-29 15:52:36 · 3195 阅读 · 2 评论 -
深入理解javascript之防篡改对象
javascript中对象内置有多个属性Configurable,Writable,Enumerable,Value,Get和Set,来控制属性的行为。同样的ES5也有几个方法,来指定对象的行为。我们知道,javascript中的对象是可以共享的,也是默认可拓展的://一旦将对象设置防篡改,就不能撤销了//众所周知,一般的对象是可以随意拓展的var person = {name:'liufang原创 2015-08-05 09:00:28 · 1425 阅读 · 0 评论 -
深入理解javascript之函数
函数的作用域和this的指向我已经在前面的文章中讲过,今天主要讲讲函数的绑定。函数绑定要创建一个函数,可以在特定的this环境中以指定参数调用另外一个函数。该技巧常常和回调函数与事件处理程序一起使用,以便在将函数作为变量传递的同时保留函数的代码执行环境。函数绑定看下面的例子:var handler = { message:"消息来了!", handlerClick :function(eve原创 2015-11-13 19:56:50 · 1235 阅读 · 0 评论 -
深入理解javascript之arguments
本文介绍arguments属性。 每一个函数在定义的时候都会有一个内置的arguments属性,这个arguments属性类似数组但又不是数组。它具有数组的访问方式和length属性,却又有caller,callee等属性。 我们来举一个arguments的使用例子:var func = function(a,b){ document.write(a+' '+b+' '+"");原创 2015-10-15 22:44:32 · 2705 阅读 · 0 评论 -
深入理解javascript之this
javascript中的this含义非常丰富,它可以是全局对象,当前对象或者是任意对象,这都取决于函数的调用方式。函数有以下几种调用方式:作为对象方法调用、作为函数调用、作为构造函数调用、apply或call调用。 对象方法调用 作为对象方法调用的时候,this会被绑定到该对象。var point = { x : 0, y : 0, moveTo : functio原创 2015-06-27 10:08:13 · 5055 阅读 · 1 评论 -
深入理解javascript之闭包
理解闭包闭包是静态语言不具有的一个特性,闭包就是函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。闭包就是函数的堆栈在函数返回后并不释放,可以理解为这些函数并不在栈上分配而是在堆上分配。 这里需要讲一下堆栈,堆与栈都是编程语言用来在RAM中存放数据的地方。栈的优势就是存取速度比堆要快,仅次于直接位于CPU中的寄存器,但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性原创 2015-06-25 19:42:37 · 1132 阅读 · 0 评论 -
深入理解javascript之原型
理解原型原型是一个对象,其他对象可以通过它实现属性继承。任何一个对象都可以成为继承,所有对象在默认的情况下都有一个原型,因为原型本身也是对象,所以每个原型自身又有一个原型。任何一个对象都有一个prototype的属性,记为:__proto__。每当我们定义一个对象,其__proto__属性就指向了其prototype。示例如下: var foo = { x: 10, y: 20 };原创 2015-06-24 19:43:19 · 3833 阅读 · 0 评论 -
深入理解javascript之作用域
简单地说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在javascript中,变量的作用域分为全局和局部两种。拥有全局作用域就是在代码任何地方都能够访问到,叫做全局变量,以下三种情况可以拥有全局作用域 最外层函数和最外层函数外面定义的变量:var name="brizer";function doSomething(){原创 2015-06-23 19:22:39 · 1540 阅读 · 0 评论 -
深入理解javascript之null和undefined
javascript中有两个容易让人忽略的问题,就是null==undefined和null!==undefined。javascript中语法规定==是判断值是否相等,===是判断值和类型是否相等。这里需要加以区分,undefined表示没有赋值的基本数据类型;null表示没有赋值的引用数据类型。示例代码: var age; var id = 100; var div02 =原创 2015-06-21 17:41:40 · 1489 阅读 · 0 评论 -
深入理解javascript之内存分配
javascript中的变量分为两种,原始值和引用值。原始值指的是原始数据类型的值,比如undefined,null,number,string,boolean类型所表示的值。引用值指的是复合数据类型的值,即Object,Function,Array等。 原始值和引用值存储在内存中的位置分别为栈和堆。原始值是存储在栈中的简单数据段,他们的值直接存储在变量访问的位置。引用值是存储在堆中的对象原创 2015-06-20 10:50:10 · 2813 阅读 · 0 评论 -
深入理解javascript系列之序章
从今天开始,博主会对javascript进行深入理解分析并将自己学习到的一些知识分析整理成博文,来让大家一起共同学习和讨论。如果有什么疑问或者建议,可以和博主联系。如果包含什么错误,希望大家可以进行讨论和指导。该系列是建立在已经基本掌握了javascript中的基础语法,进入更深一步学习的进阶笔记。该系列目录分为:深入理解之内存分配原创 2015-06-20 10:26:31 · 1788 阅读 · 1 评论