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