
javascript
官小飞
hello everybody,hello everyone。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
强大的原生DOM选择器querySelector和querySelectorAll
在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id 等方式来查找,这显然是远远不够的,如果想要进行更为精确的选择不得不使用看起来非常繁琐的正则表达式,或者使用某个库。事实上,现在所有的浏览器厂商都提供了 querySelector 和 querySele原创 2016-06-13 10:18:00 · 40172 阅读 · 2 评论 -
JavaScript学习--Item26 异步的脚本加载
先来看这行代码:<script src = "allMyClientSideCode.js"></script>这有点儿……不怎么样。“这该放在哪儿?”开发人员会奇怪,“靠上点,放到<head>标签里?还是靠下点,放到<body>标签里?”这两种做法都会让富脚本站点的下场很凄惨。<head>标签里的大脚本会滞压所有页面渲染工作,使得用户在脚本加载完毕之前一直处于“白屏死机”状态。而<body>标签末原创 2016-05-31 15:46:07 · 3747 阅读 · 0 评论 -
JavaScript学习--Item24 ES6新特性概览
ES6新特性概览本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用。ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony(和谐之意,显然没有跟上我国的步伐,我们已经进入中国梦版本了)。上一次标准的制订还是2009年出台的ES5。目前ES6的标准化工作正在进行中,预计会在14年12月份放出正式敲定的版本。但大原创 2016-05-31 15:44:22 · 3950 阅读 · 0 评论 -
JavaScript学习--Item23 定时器的合理使用
1、定时器概述window对象提供了两个方法来实现定时器的效果,分别是window.setTimeout()和window.setInterval。其中前者可以使一段代码在指定时间后运行;而后者则可以使一段代码每过指定时间就运行一次。它们的原型如下: window.setTimeout(expression,milliseconds); window.setInterval(expression,原创 2016-05-31 15:41:04 · 491 阅读 · 0 评论 -
JavaScript学习--Item22 Date对象全解析
本篇主要介绍 Date 日期和时间对象的操作。1. 介绍1.1 说明Date对象,是操作日期和时间的对象。Date对象对日期和时间的操作只能通过方法。1.2 属性无; Date对象对日期和时间的操作只能通过方法。2. 构造函数2.1 new Date() :返回当前的本地日期和时间参数:无返回值:{Date} 返回一个表示本地日期和时间的Date对象。示例:var dt = new Date();原创 2016-05-31 15:38:46 · 596 阅读 · 0 评论 -
JavaScript学习--Item21 漂移的this
而在 JavaScript 中,this 是动态绑定,或称为运行期绑定的,这就导致 JavaScript 中的 this 关键字有能力具备多重含义,带来灵活性的同时,也为初学者带来不少困惑。本文仅就这一问题展开讨论,阅罢本文,读者若能正确回答 JavaScript 中的 What ’s this 问题,作为作者,我就会觉得花费这么多功夫,撰写这样一篇文章是值得的。我们要记住一句话:this永远指向函原创 2016-05-30 10:42:11 · 6045 阅读 · 1 评论 -
JavaScript学习--Item20 作用域与作用域链(scope chain)
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。1、JavaScript作用域 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在J原创 2016-05-30 10:39:00 · 495 阅读 · 0 评论 -
JavaScript学习--Item19 执行上下文(execution context)
在这篇文章里,我将深入研究JavaScript中最基本的部分——执行上下文(execution context)。读完本文后,你应该清楚了解释器做了什么,为什么函数和变量能在声明前使用以及他们的值是如何决定的。1、EC—执行环境或者执行上下文每当控制器到达ECMAScript可执行代码的时候,控制器就进入了一个执行上下文(好高大上的概念啊)。javascript中,EC分为三种:全局级别的代码 –原创 2016-05-30 10:35:06 · 6101 阅读 · 1 评论 -
JavaScript学习--Item18 JScript的Bug与内存管理
1、JScript的BugIE的ECMAScript实现JScript严重混淆了命名函数表达式,搞得现很多人都出来反对命名函数表达式,而且即便是现在还一直在用的一版(IE8中使用的5.8版)仍然存在下列问题。下面我们就来看看IE在实现中究竟犯了那些错误,俗话说知已知彼,才能百战不殆。我们来看看如下几个例子:例1:函数表达式的标示符泄露到外部作用域var f = function g(){};typ原创 2016-05-30 10:27:05 · 368 阅读 · 0 评论 -
JavaScript学习--Item17 循环与prototype最后的几点小tips
1、优先使用数组而不是Object类型来表示有顺序的集合ECMAScript标准并没有规定对JavaScript的Object类型中的属性的存储顺序。但是在使用for..in循环对Object中的属性进行遍历的时候,确实是需要依赖于某种顺序的。正因为ECMAScript没有对这个顺序进行明确地规范,所以每个JavaScript执行引擎都能够根据自身的特点进行实现,那么在不同的执行环境中就不能保证fo原创 2016-05-30 10:20:50 · 548 阅读 · 0 评论 -
JavaScript学习--Item27 异步编程异常解决方案
1、JavaScript异步编程的两个核心难点异步I/O、事件驱动使得单线程的JavaScript得以在不阻塞UI的情况下执行网络、文件访问功能,且使之在后端实现了较高的性能。然而异步风格也引来了一些麻烦,其中比较核心的问题是:1、函数嵌套过深JavaScript的异步调用基于回调函数,当多个异步事务多级依赖时,回调函数会形成多级的嵌套,代码变成 金字塔型结构。这不仅使得代码变难看难懂,更使得调试原创 2016-05-31 15:49:13 · 3976 阅读 · 0 评论 -
JavaScript学习--Item28 垃圾回收机制与内存管理
1、垃圾回收机制—GCJavascript具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存。原理:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。JavaScript垃圾回收的机制很简单:找出不再使用的变量,然后释放掉其占用的内存,但是这个过程不是实时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间原创 2016-05-31 16:03:59 · 560 阅读 · 0 评论 -
JavaScript学习--Item29 DOM基础详解
看完JavaScript高级程序设计,整理了一下里面的DOM这一块的知识点,比较多,比较碎!DOM在整个页面的地位如图:DOM(文档对象模型)是针对HTML 和XML 文档的一个API(应用程序编程接口)。DOM描,绘了一个层次化的节点树,允许开发人员添加、移除和修改页面的某一部分.1、节点层次DOM 可以将任何HTML 或XML 文档描绘成一个由多层节点构成的结构。节点分为几种不同的类型,每种类型原创 2016-05-31 16:05:59 · 4178 阅读 · 0 评论 -
JavaScript学习--Item37 面向对象高级程序设计
1. JS是基于原型的程序建立一个简单的面向对象的类。有属性,有方法。function Aaa(){ this.name = '小明';}Aaa.prototype.showName = function(){ alert( this.name );};var a1 = new Aaa();a1.showName();在JS的自身的对象中,也是new一个对象,然后调用方法,比原创 2016-06-02 09:30:05 · 4207 阅读 · 0 评论 -
JavaScript学习--Item36 客户端检测技术
JavaScript 客户端检测JavaScript 客户端检测是指通过javascript,判断客户端的环境,诸如使用的浏览器和操作系统。客户端检测是一种行之有效的开发策略。但不到万不得已,就不要使用客户端检测。先设计通用的方案,然后根据浏览器之间的差异和各自的怪癖quirky,再使用特定于浏览器的技术增强该方案。user-agent字符串检测法是最原始的浏览器检测方式,每个访问网站的程序都必须提原创 2016-06-02 09:27:43 · 3999 阅读 · 0 评论 -
JavaScript学习--Item35 事件流与事件处理
1. 事件处理1.1. 绑定事件方式(1)行内绑定 语法: //最常用的使用方式 <元素 事件=”事件处理程序”>(2)动态绑定 //结构+样式+行为分离的页面(html+css+js事件) 语法: 对象.事件=事件处理程序行内绑定和动态绑定的重要区别:以上程序是不可用的,点击div时,执行test函数,这时,test中的this表示window对象 因为原创 2016-06-02 09:22:54 · 4008 阅读 · 0 评论 -
JavaScript学习--Item25 创建对象(类)的8种方法总结
1. 使用Object构造函数来创建一个对象下面代码创建了一个person对象,并用两种方式打印出了Name的属性值。 var person = new Object(); person.name="kevin"; person.age=31; alert(person.name); alert(person["name"])上述写法的另外一种表现形式是使用对象原创 2016-06-02 09:21:14 · 565 阅读 · 0 评论 -
JavaScript学习--Item34 大白话讲解Promise
ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6中最重要的特性之一,我们有必要掌握并理解透彻。本文将由浅到深,讲解Promise的基本概念与使用方法。ES6 Promise 先拉出来遛遛一、Promise小试复杂的概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受。那么第一个问题来了,Promise是什么玩意呢?是一个类?对象?数组?原创 2016-06-02 09:18:18 · 4225 阅读 · 0 评论 -
JavaScript学习--Item33 跨域总结与解决办法
一、神马是跨域(Cross Domain)说白点就是post、get的url不是你当前的网站,域名不同。例如在*aaa.com/a.html*里面,表单的提交action是bbb.com/b.html。不仅如此,www.aaa.com和aaa.com之间也属于跨域,因为www.aaa.com是二级域名,aaa.com是根域名。JavaScript出于安全方面的考虑,是不允许跨域调用其他页面的对象的(原创 2016-06-02 09:15:43 · 5452 阅读 · 0 评论 -
JavaScript学习--Item32 DOM基础详解2
先上几张图简要看看DOM的一些方法属性:大概这些就是常用的,下面具体聊聊。节点类型的判断其中元素节点Element的判定最为重要,下面给出4个主要的方法;1、如何判断节点是元素节点可以用isElement()方法<div id="test">aaa</div><!--这是一个注释节点--><script>var isElement = function (el){ return !!e原创 2016-06-02 09:12:58 · 430 阅读 · 0 评论 -
JavaScript学习--Item31 值得你挑战的JavaScript面试题(45题)
你不知道的JavaScript系列,已经有这么多篇博文了,今天找了一些题目,我觉得,下面这些是你“不可能全部会做 ” 的javascript题目,不信你可以试试,答案在后面的博客给出,也许你是jser大神,欢迎挑战一下!给答对一半以上的同学点10086个赞!!!!!!双十一的夜晚,和你们一起High起来!!!!!!!!!!!!!!!!!!1,以下表达式的运行结果是:["1","2","3"].map原创 2016-06-01 19:14:15 · 711 阅读 · 0 评论 -
JavaScript学习--Item30 数组进阶全掌握
在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活、强大,不像是Java等强类型高级语言数组只能存放同一类型或其子类型元素,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改。1、创建数组在JavaScript多种方原创 2016-05-31 16:09:15 · 11856 阅读 · 0 评论 -
JavaScript学习--Item16 for 循环和for...in 循环的那点事儿
大家都知道在JavaScript中提供了两种方式迭代对象:for 循环; for..in循环; 1、for循环不足:在于每次循环的时候数组的长度都要去获取;终止条件要明确;在for循环中,你可以循环取得数组或是数组类似对象的值,譬如arguments和HTMLCollection对象。通常的循环形式如下:// 次佳的循环for (var i = 0; i < myarray.lengt原创 2016-05-30 10:12:19 · 1125 阅读 · 0 评论 -
JavaScript学习--Item15 prototype原型和原型链详解
用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱。每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也原创 2016-05-30 10:08:42 · 4686 阅读 · 0 评论 -
JavaScript学习--Item2 浮点数精度
理解JavaScript的浮点数大多数编程语言都有几种数值型数据类型,但是JavaScript却只有一种。你可以使用typeof 运算符查看数字的类型。不管是整数还是浮点数,JavaScript都将它们简单地归类为数字。typeof 17; //numbertypeof 98.6; //numbertypeof -21.3; //number事实上,JavaScript中所有的数字都是双精原创 2016-05-25 19:38:14 · 551 阅读 · 0 评论 -
JavaScript学习--Item1 严格模式
本文转自【阮一峰博客】:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html一、概述除了正常运行模式,ECMAscript 5添加了第二种运行模式:“严格模式”(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。设立”严格模式”的目的,主要有以下几个:消除Javascript语法原创 2016-02-26 14:10:10 · 622 阅读 · 0 评论 -
JavaScript的数据类型详解
数据类型 JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有1种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的。 typeof操作符 介于JavaScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型——typeof就是负责提供者方面信息原创 2015-12-28 10:09:22 · 382 阅读 · 0 评论 -
JavaScript学习--Item3 隐式强制转换
JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object。object是引用类型,其它的五种是基本类型或者是原始类型。我们可以用typeof方法打印来某个是属于哪个类型的。不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等。。typeof '11' /原创 2016-05-25 19:40:46 · 391 阅读 · 0 评论 -
JavaScript学习--Item4 基本类型和基本包装类型(引用类型)
你不知道的JavaScript–Item4 基本类型和基本包装类型(引用类型) <div class="article_manage clearfix"> <div class="article_l"> <span class="link_categories"> 标签: <a h原创 2016-05-25 19:43:01 · 6917 阅读 · 0 评论 -
JavaScript学习--Item5 全局变量
1、尽量少用全局对象全局变量的问题在于,你的JavaScript应用程序和web页面上的所有代码都共享了这些全局变量,他们住在同一个全局命名空间,所以当程序的两个不同部分定义同名但不同作用的全局变量的时候,命名冲突在所难免。web页面包含不是该页面开发者所写的代码也是比较常见的,例如:第三方的JavaScript库 广告方的脚本代码 第三方用户跟踪和分析脚本代码 不同类型的小组件,原创 2016-05-25 19:46:12 · 540 阅读 · 0 评论 -
JavaScript学习--Item14 使用prototype的几点注意事项
1、在prototype上保存方法不使用prototype进行JavaScript的编码是完全可行的,例如:function User(name, passwordHash) { this.name = name; this.passwordHash = passwordHash; this.toString = function() { re原创 2016-05-30 10:06:24 · 871 阅读 · 0 评论 -
JavaScript学习--Item13 理解 prototype, getPrototypeOf 和__proto__
1、深入理解prototype, getPrototypeOf和_ proto _prototype,getPropertyOf和 _ proto _ 是三个用来访问prototype的方法。它们的命名方式很类似因此很容易带来困惑。它们的使用方式如下:C.prototype: 一般用来为一个类型建立它的原型继承对象。比如C.prototype = xxx,这样就会让使用new C()得到的对象的原原创 2016-05-30 10:03:50 · 539 阅读 · 0 评论 -
JavaScript学习--Item12 undefined 与 null
当讨论JavaScript中的原始数据类型时,大多数人都知道从String、Number到Boolean的基本知识。这些原始类型相当简单,行为符合常识。但是,本文将更多关注独特的原始数据类型Null和Undefined,是什么让它们如此相似,却又似是而非。一、理解null和undefined在JavaScript中,null是字面量同时也是语言中的关键字,用来表示无法识别的对象值。换句话说,这用来表原创 2016-05-25 20:10:30 · 465 阅读 · 0 评论 -
JavaScript学习--Item11 arguments对象
1、什么是argumentsarguments 是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的。所有主要的js函数库都利用了arguments对象。所以agruments对象对于javascript程序员来说是必需熟悉的。在javascript函数体内,标识符arguments具有特殊含义。它是调用对象的一个特殊属性,用来引用Arguments对象。Arug原创 2016-05-25 20:07:56 · 460 阅读 · 0 评论 -
JavaScript学习--Item10 闭包(closure)
JavaScript 闭包究竟是什么?用JavaScript一年多了,闭包总是让人二丈和尚摸不着头脑。陆陆续续接触了一些闭包的知识,也犯过几次因为不理解闭包导致的错误,一年多了资料也看了一些,但还是不是非常明白,最近偶然看了一下 jQuery基础教程 的附录,发现附录A对JavaScript的闭包的介绍简单易懂,于是借花献佛总结一下。1、定义闭包:是指有权访问另外一个函数作用域中的变量的函数。创建闭原创 2016-05-25 20:05:08 · 7095 阅读 · 0 评论 -
JavaScript学习--Item9 call(),apply(),bind()与回调
1、call(),apply(),bind()方法JavaScript 中通过call或者apply用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。简单的说就是改变函数执行的上下文,这是最基本的用法。两个方法基本区别在于传参不同。call(obj,arg1,arg2,arg3); call第一个参数传对象,可以是null。参数以逗号分原创 2016-05-25 20:03:38 · 7729 阅读 · 0 评论 -
JavaScript学习--Item8 函数,方法,构造函数调用 标签: javascript构造函数面向对象函数call
1、函数调用Function绝对是JavaScript中的重中之重。在JavaScript中,Function承担了procedures, methods, constructors甚至是classes以及modules的功能。在面向对象程序设计中,functions,methods以及class constructor往往是三件不同的事情,由不同的语法来实现。但是在JavaScript中,这三个概原创 2016-05-25 20:01:32 · 571 阅读 · 0 评论 -
JavaScript学习--Item7 函数和(命名)函数表达式
1、函数声明与函数表达式在ECMAScript中,创建函数的最常用的两个方法是函数表达式和函数声明,两者期间的区别是有点晕,因为ECMA规范只明确了一点:函数声明必须带有标示符(Identifier)(就是大家常说的函数名称),而函数表达式则可以省略这个标示符:函数声明:function 函数名称 (参数:可选){ 函数体 }函数表达式:function 函数名称(可选)(参数:可选){ 函数体 }原创 2016-05-25 19:51:48 · 990 阅读 · 0 评论 -
JavaScript学习--Item6 var预解析与函数声明提升(hoist )
1、var 变量预编译JavaScript 的语法和 C 、Java、C# 类似,统称为 C 类语法。有过 C 或 Java 编程经验的同学应该对“先声明、后使用”的规则很熟悉,如果使用未经声明的变量或函数,在编译阶段就会报错。然而,JavaScript 却能够在变量和函数被声明之前使用它们。下面我们就深入了解一下其中的玄机。先来看一段代码:(function() { console.log(n原创 2016-05-25 19:49:33 · 570 阅读 · 0 评论 -
关于JavaScript的九个思维导图
学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将po出10张javascript相关的思维导图。 思维导图小tips:思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又极其有效,是一种革命性的思维工具。思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级图表现出来,把主题关键词与图像、颜色等建立记忆链接,思维导图充分运用左右脑的机能,利用记原创 2015-12-28 10:06:43 · 1605 阅读 · 2 评论