javascript
文章平均质量分 68
gigi就是我
这个作者很懒,什么都没留下…
展开
-
JS闭包学习笔记(3):模块
function coolModule(){ var something = "cool"; var another = [1,2,3]; function doSomething(){ console.log(something); } function doAnother(){ console.log(another.joi原创 2016-07-11 11:19:22 · 691 阅读 · 0 评论 -
js学习笔记:命名空间
只有一个全局作用域导致的常见错误是命名冲突。在 JavaScript中,这可以通过 匿名包装器 轻松解决。(function() { // 函数创建一个命名空间 window.foo = function() { // 对外公开的函数,创建了闭包 };})(); // 立即执行此匿名函数匿名函数被认为是 表达式;因此为了可调用性,它们首先会被执行。( // 小括转载 2016-07-17 16:59:37 · 492 阅读 · 0 评论 -
JS闭包学习笔记(2):循环和闭包
经典例子:for(var i=1;i<=5;i++){ setTimeout(function timer(){ console.log(i); },i*1000);}最终的结果并不如我们期待的打印出1,2,3,4,5,而是打印出6,6,6,6,6.setTimeout的回调函数timer会在循环结束后才开始执行,因此会输出i最后的值6.即使将setTimeout的原创 2016-07-07 11:11:37 · 577 阅读 · 0 评论 -
JS闭包学习笔记(1):什么是闭包
闭包:当一个函数在其被声明的作用域环境外被执行时,它可以记住和使用它原本作用域链中的变量。function foo(){ var a = 2; function bar(){ console.log(a); } return bar;}var baz = foo();baz(); //2bar函数可以使用foo函数内的变量。而当最后baz函数执行时原创 2016-07-07 11:10:26 · 451 阅读 · 0 评论 -
JS学习笔记:类型转换
JavaScript 是弱类型语言,所以会在任何可能的情况下应用强制类型转换。// 下面的比较结果是:truenew Number(10) == 10; // Number.toString() 返回的字符串被再次转换为数字10 == '10'; // 字符串被转换为数字10 == '+10 '; // 同上10 == '010'; //转载 2016-07-21 22:33:45 · 423 阅读 · 0 评论 -
JS学习笔记:变量提升
JavaScript 会提升变量声明。这意味着 var 表达式和 function 声明都将会被提升到当前作用域的顶部。bar();var bar = function() {};var someValue = 42;test();function test(data) { if (false) { goo = 1; } else { var go转载 2016-07-17 16:57:57 · 711 阅读 · 0 评论 -
js学习笔记:数据类型
语法js的标识符第一个字符必须是字母,下划线或$,不能是数字严格模式: 在整个脚本或函数顶部:“use strict”在语句结尾加上分号有助于增进代码性能,因为这样解析器就不必再花时间推测在哪里插入分号了。变量未经初始化的变量的值为undefined省略var操作符会创建一个全局变量;但给未经声明的变量赋值在严格模式下会抛出ReferenceError错误数据类型5种简单数据类型:u原创 2016-09-08 22:50:45 · 494 阅读 · 0 评论 -
js学习笔记:语句和函数
语句if语句if的条件结果并不一定是布尔值,js会自动调用Boolean()转换函数来将这个表达式的结果转换为布尔值。do-while语句后测试循环语句,循环体内的代码至少会被执行一次。while语句前测试循环语句for语句前测试循环语句。 - 使用while循环做不到的,使用for循环也做不到 - 如果将for语句的初始化表达式、控制表达式和循环后表达式全部省略,就会创建一个无限循环。原创 2016-09-11 19:58:45 · 379 阅读 · 0 评论 -
js学习笔记:基本类型和引用类型
基本类型和引用类型ECMAScript包含两种不同数据类型的值:基本类型:Undefined、Null、Boolean、Number、String。是按值访问的,可以操作保存在变量中的实际的值。引用类型:值是保存在内存中的对象。与其它语言不同,js 不允许直接访问内存中的位置,也就说不能直接操作对象的内存空间。因此在操作对象时,实际上是在操作对象的引用而不是实际的对象。因此引用类型的值是按引用访原创 2016-09-11 21:05:03 · 408 阅读 · 0 评论 -
js学习笔记:基本包装类型——Boolean
Boolean类型是与布尔值对应的引用类型,要创建Boolean对象,可以调用Boolean构造函数并传入true或false值。var booleanObject = new Boolean(true);重写了valueOf方法,返回基本类型值true或false重写了toString方法,返回字符串“true”或“false”由于在布尔表达式中所有对象都为true,Boolean对象也不意原创 2016-09-17 19:49:42 · 424 阅读 · 0 评论 -
js学习笔记:基本包装类型——Number
Number是与数字值对应的基本包装类型,可以调用Number构造函数并传递数值来创建Number对象。var numberObject = new Number(10);重写了valueOf方法:返回数值重写了toString和toLocaleString:返回字符串形式的数值 还可以为toString方法传递表示基数的参数,来告诉他返回多少进制的数值的字符串形式。toFixed()按照指原创 2016-09-17 20:15:44 · 434 阅读 · 0 评论 -
js学习笔记:基本包装类型
为了便于操作基本类型值,ECMAscript还提供了3个体数的引用类型:Boolean、Number、String。每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据。基本类型与基本包装类型的主要区别:对象的生存期 使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。自动创建的基本包装类型的对象,则原创 2016-09-17 19:37:30 · 468 阅读 · 0 评论 -
js学习笔记:script元素
script元素在解释器对 < script > 元素内部的所有代码求值完毕以前,页面中的其余内容都不会被浏览器加载或显示。在解析外部js文件(包括下载该文件)时,页面的处理也会暂时停止。带有src属性的< script >元素内部不应该再包含额外的代码了。如果包含嵌入的代码,则只会下载并执行外部脚本文件,嵌入的代码会被忽略。只要不存在async和defer属性,浏览器都会按照< scrip原创 2016-09-08 21:48:25 · 508 阅读 · 0 评论 -
js学习笔记:DOM2和DOM3(放弃……)
DOM1级主要定义的还是HTML的地层结构,DOM2和DOM3级则在这个结构的基础上引入了更多的交互能力。为此,DOM2和DOM3级分为许多模块,分别描述了DOM的某个非常具体的子集。DOM2核心:为节点添加了更多方法和属性DOM2视图:为文档定义了基于样式信息的不同视图DOM2事件:说明了如何使用事件与DOM文档交互DOM2样式:定义了如何以编程方式来访问和改变CSS样式信息DOM2遍历原创 2016-10-24 17:49:10 · 2558 阅读 · 0 评论 -
js学习笔记:事件——事件流、事件处理程序、事件对象
Javascript与HTML之间的交互是通过事件实现的。 事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。 可以使用侦听器来预定事件,以便事件发生时执行相应代码。事件流事件流描述的是从页面中接受事件的顺序。事件冒泡IE的事件流叫做事件冒泡,即事件开始是由最具体的元素接收,然后逐级向上传播到较为不具体的节点(文档)。 如果点击了页面中的一个div元素,那么这个click事件可能会按照如下原创 2016-10-25 11:31:03 · 7599 阅读 · 5 评论 -
js学习笔记:DOM——DOM操作技术
动态脚本使用< script>元素可以向页面中插入js代码,一种方式是通过其src特性包含外部文件;另一种方式就是用这个元素本身来包含代码。 而动态脚本指的是,在页面加载时不存在,但在将来的某一时刻通过修改DOM动态添加的脚本。跟操作HTML元素一样,创建动态脚本也有两种方式:插入外部文件和直接插入js代码。动态加载的外部js文件能够立即执行:var script = document.cre原创 2016-10-20 15:48:08 · 540 阅读 · 0 评论 -
js学习笔记:表单
表单的基础知识在HTML中,表单是由元素来表示的,而在JS中,表单对应的则是HTMLFormElement类型。 HTMLFormElement类型继承了HTMLElement,因而与其他HTML元素具有相同的默认属性。不过HTMLFormElement也有它自己下列独有的属性和方法:action:接受请求的URLelements:表单中所有控件的集合length:表单中控件的数量原创 2016-11-21 20:47:55 · 1240 阅读 · 0 评论 -
js学习笔记:JSON
曾经,XML是互联网上传输结构化数据的事实标准。但是XML太过繁琐、冗长。为解决这个问题,JSON出现了。JSON是js的一个严格的子集,利用了js中的一些模式来表示结构化数据。关键JSON是一种数据格式,而不是一种编程语言,虽然有相同的语法形式,但JSON并不从属于js,很多语言都有针对JSON的解析器和序列化器。语法JSON的语法可以表示以下三种类型的值:简单值:使用与js相同的语法,可以在J原创 2016-11-22 22:12:56 · 670 阅读 · 0 评论 -
知识点:cookie、localStorage、sessionStorage
问: 请描述一下 cookies,sessionStorage 和 localStorage 的区别? 答: cookie最初是客户端用来存储会话信息的。在客户端每次向服务器发送请求的时候,都会在请求中带上cookie信息,服务器响应也是。服务器端也可以设置cookie的各项属性。 localStorage和sessionStorage都是存储在客户端本地的,不原创 2016-12-20 20:57:44 · 327 阅读 · 0 评论 -
知识点:page visibility (页面可见性)
page visibility API 可以获取到一个网页是否可见的状态,并能获取可见性变化的事件。属性document.hidden(只读):页面处于隐藏状态时返回true,否则返回false。document.visibilityState(只读): 用来展示文档可见性状态的字符串。可能的值: visible:页面可见hidden:页面不可见。页面可能被最小化、或是一个后台标签。pre原创 2016-12-20 21:40:13 · 907 阅读 · 0 评论 -
什么是模块化(二)
模块打包一般来讲,我们用模块化组织代码的时候,都会把模块划分在不同的文件和文件夹里。而后,所有的这些模块都需要通过< script>标签引入到你的HTML文件中,然后用户在访问你网页的时候它才能正常显示和工作。每个独立的< script>标签都意味着,它们要被浏览器分别一个个地加载。这就有可能导致页面载入时间过长。为了解决这个问题,我们就需要进行模块打包,把所有的模块合并到一个或几个文件中,以此来减原创 2016-12-10 14:47:04 · 395 阅读 · 0 评论 -
js学习笔记:this
this是Javascript语言的一个关键字,它代表函数运行时自动生成的一个内部对象,只能在函数内部使用。随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是: this指的是,调用函数的那个对象! this指的是,调用函数的那个对象! this指的是,调用函数的那个对象!所以首先必须要搞清楚在JS里面有几种函数的调用方式:普通函数调用作为对象方法来调用作为构造函原创 2017-01-08 12:08:54 · 540 阅读 · 0 评论 -
正则表达式必知必会(三)
使用子表达式在这一部分将要学习如何运用子表达式的概念对表达式进行分组和归类。什么是子表达式之前学习的用来表明重复次数的元字符(如?或*或{2}等),都是只作用于紧挨着它的前一个字符。举个例子,在HTML中会使用 来表示空格,如果我们想匹配一个HTML文档中的连续两个以上的空格,我们会写出如下表达式: {2,}但是我们发现不会得到预期的结果,原因是{2,}只会作用于紧挨着它的前一个原创 2017-01-11 22:01:43 · 516 阅读 · 0 评论 -
js学习笔记:对象——行为委托
委托理论其实原型链这个机制的本质就是形成对象之间的关联关系。这样的机制更适合用委托理论而不是类的思想去思考。接下来看一个例子:首先我们要定义一个名为Task的对象,它会包含所有任务都可以使用的具体行为。我们会把特定的任务对象都关联到Task功能对象上,让它们在需要的时候可以进行委托。下面是推荐的代码形式,非常简单:Task = { setId:function(ID){this.id = I原创 2017-02-06 10:32:24 · 1672 阅读 · 0 评论 -
js学习笔记:String中的模式匹配
String类型定义了几个用于在字符串中匹配模式的方法。match在字符串上调用这个方法,本质上与调用RegExp的exec()方法相同。 match()方法之接收一个参数:正则表达式或一个RegExp对象。var text = "cat, bat, sat, fat";var pattern = /.at/;//与pattern.exec(text)相同var matches = text.原创 2017-01-15 11:58:55 · 940 阅读 · 0 评论 -
js学习笔记:DOM——节点层次
DOM(文档对象模型)是针对HTML和XML文档的一个API,描绘了一个层次化的节点树。 DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的结构。 节点分为几种不同的类型。文档节点是每个文档的根节点。html元素为文档元素。文档元素是文档的最外层元素文档中的其他所有元素都包含在文档元素中。每个文档都只能有一个文档元素。在html页面中,文档元素始终都是html元素。在这里用脑原创 2016-10-16 21:55:29 · 8087 阅读 · 1 评论 -
正则表达式必知必会(一)
正则表达式是被用来匹配字符串中的字符组合的模式。匹配单个字符匹配纯文本正则表达式可以包含纯文本,并且可以只包含纯文本。 Ben就是一个简单的纯文本正则表达式。它将匹配文本中的Ben。有多个匹配结果绝大多数正则表达式引擎的默认行为是只返回第一个匹配结果。 而若想得到所有匹配结果,就需要做一些配置。 在JavaScript中就是指定g标志,表示将返回一个包含所有匹配的结果数组。大小写问题正则表达式原创 2017-01-10 22:20:15 · 751 阅读 · 0 评论 -
js学习笔记:引用类型——Object
原生引用类型Object类型大多数引用类型都是Object类型的实例。创建Object实例创建Object实例的方法有两种:使用new操作符var person = new Object();person.name = "nicholas";person.age = 29;使用对象字面量var person = { name:"nicholas", age:29}属性名原创 2016-09-12 16:58:10 · 498 阅读 · 0 评论 -
js学习笔记:null与undefined
null是基本数据类型之一,是一个JavaScript字面量,表示空对象指针。这里有几个注意的地方:null是一个字面量,而不是全局对象的一x个属性,但undefined是其属性。由于null表示一个空对象指针,表示没有对象,因此用typeof检测会返回“object”undefined是基本数据类型之一,可以代表不存在的属性或其他不存在的值,即“缺少值”:变量被声明了,但没有赋值时,就等于原创 2017-01-16 10:37:16 · 418 阅读 · 0 评论 -
js学习笔记:==和===
概览==和===都是JavaScript中的关系表达式运算符,与对应的还有!=和!==。==和===运算符主要用于比较两个值是否相等。当然它们对相等的定义不尽相同。两个运算符允许任意类型的操作数,如果操作数相等则返回true,否则返回false。==和===虽然都是关系表达式运算符,但它们的定义是有所不同的:==:称作相等运算符(Equality Operator),它用来检测两个操作是否相等,这原创 2017-01-16 11:22:59 · 396 阅读 · 0 评论 -
正则表达式必知必会(二)
重复匹配匹配多个字符匹配一个或多个字符要想匹配同一个字符(或字符集合)的多次重复,只要简单地给这个字符(或字符集合)加上一个+字符作为后缀就行了。 +匹配一个或多个字符(至少一个,不匹配零个字符的情况)。比如,a+将匹配一个或多个连续出现的a。[0-9]+匹配一个或多个连续的数字。 在给一个字符集合加上+后缀的时候,必须把+放在这个字符集合的外面。 比如说,[0-9]+是正确的,[0-9原创 2017-01-11 17:08:06 · 753 阅读 · 0 评论 -
如何做到 jQuery-free?
此文旨在比较jQuery和原生js在操作DOM方面的异同。 因为DOM本身就具有很丰富的操作方法,所以其实jQuery的使用或许不是必要的。尾部追加DOM元素//jsparent.appendChild(child);//jquery$(parent).append($(child));这里去看了一下jQuery的append方法的源码,其实就是使用的DOM的append转载 2017-01-16 16:54:55 · 479 阅读 · 0 评论 -
js学习笔记:DOM扩展
尽管DOM作为API已经十分完善了,但为了实现更多功能,仍会有一些标准或专有的扩展。 对DOM的两个主要的扩展是Selectors API 和HTML5.Selectors API众多js库中最常用的一项功能就是根据CSS选择符选择与某个模式匹配的DOM元素。实际上,jQuery的核心就是通过CSS选择符查询DOM文档取得元素的引用,从而抛开getElementById()和getElements原创 2016-10-20 22:50:09 · 1502 阅读 · 0 评论 -
js学习笔记:引用类型——RegExp
有关正则表达式的知识可以参考: 正则表达式必知必会(一) 正则表达式必知必会(二) 正则表达式必知必会(三)创建正则表达式字面量ECMAScript通过RegExp类型来支持正则表达式。 使用下面的语法就可以创建一个正则表达式:var expression = /pattern/flags;pattern:模式部分,可以是任何简单或者复杂的正则表达式,可以包含字符类、限定符、分组、向前查找原创 2017-01-14 22:31:39 · 407 阅读 · 0 评论 -
js学习笔记:基本包装类型——String
String类型是字符串的对象包装类型,可以像下面这样使用String构造函数来创建:var stringObject = new String("hello world");String继承的valueOf,toString和toLocaleString都返回对象所表示的基本字符串值。 String的每个实例都有一个length属性,表示字符串中包含多少字符。字符方法charAt() charC原创 2016-09-17 20:58:14 · 388 阅读 · 0 评论 -
js学习笔记:操作符
操作符js操作符可以适用于很多值,如字符串、数字、布尔、甚至对象。在应用于对象时,相应的操作符通常都会调用对象的valueOf方法和toString方法,以便取得可操作的值。一元操作符递增和递减 前置型与后置型:前者是在语句被求值之前改变的,而后者实在语句被求值之后才执行的。对所有值都适用 包含有效数字的字符串:将其转换成数字再进行加减1的操作,字符串变量变为数值变量。不包含有效数字的字符原创 2016-09-11 10:07:26 · 1012 阅读 · 0 评论 -
js判断浏览器类型及其版本
navigator利用navigator对象的useragent属性, 返回当前浏览器的user agent字符串并进行解析,进而得到浏览器类型及版本。var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua.match(/rv:([\d.]+)\) like ge原创 2017-02-20 13:22:14 · 433 阅读 · 0 评论 -
js学习笔记:严格模式
概述除了正常运行模式,ECMAscript 5添加了第二种运行模式:”严格模式”(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。设立”严格模式”的目的,主要有以下几个:消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;消除代码运行的一些不安全之处,保证代码运行的安全;提高编译器效率,增加运行速度;为未来新版本的Javascri原创 2017-02-20 14:01:59 · 297 阅读 · 0 评论 -
js垃圾回收和内存泄漏
内存生命周期不管什么程序语言,内存生命周期基本是一致的: 分配所需要的内存 在js中,值的初始化以及一些函数调用自动完成内存分配使用分配到的内存 对分配的内存进行读取与写入的过程当内存不再需要时释放 大多数内存管理的问题都在这个阶段。在这里最艰难的任务是找到“所分配的内存确实已经不再需要了”。它往往要求开发人员来确定在程序中哪一块内存不再需要并且释放它。高级语言解释器嵌入了“垃圾回原创 2017-03-02 16:48:07 · 620 阅读 · 1 评论 -
js学习笔记:Ajax
Ajax,(Asynchronous JavaScript + XML),能够向服务器请求额外的数据而无需卸载页面。 Ajax技术的核心是XMLHttpRequest对象(简称XHR)。XHR为向服务器发送请求和解析服务器响应提供了流畅的接口,能够以异步方式从服务器取得更多信息,意味着用户单击后可以不必刷新页面也能取得新数据。XMLHttpRequest对象大多数现代浏览器都支持原生的XHR对象,原创 2016-11-23 22:33:13 · 757 阅读 · 0 评论