JavaScript
文章平均质量分 58
goulei2010
这个作者很懒,什么都没留下…
展开
-
JavaScript调试技巧之console.log()详解
对于JavaScript程序的调试,相比于alert(),使用console.log()是一种更好的方式,原因在于:alert()函数会阻断JavaScript程序的执行,从而造成副作用;而console.log()仅在控制台中打印相关信息,因此不会造成类似的顾虑 一、什么是console.log()? 除了一些很老版本的浏览器,现今大多数浏转载 2017-01-03 11:50:12 · 3477 阅读 · 0 评论 -
深入理解javascript原型和闭包(5)——instanceof
又介绍一个老朋友——instanceof。 对于值类型,你可以通过typeof判断,string/number/boolean都很清楚,但是typeof在判断到引用类型的时候,返回值只有object/function,你不知道它到底是一个object对象,还是数组,还是new Number等等。 这个时候就需要用到instanceof。例如: 上图中,f1这个对象是被Fo转载 2016-12-20 16:01:55 · 222 阅读 · 0 评论 -
在JS中,什么时候会用到Object.defineProperty()来设置或者修改对象属性?
Object.defineProperty(Object.prototype, 'foo', {value: function() {console.log(foo);}}); (这样添加的属性是不可修改不可枚举不可再次配置的) 当你非要给原生类原型添加方法时,不用 defineProperty 就会给其它程序(如 for in)添加麻烦 当然 getter/setter 要兼原创 2017-01-08 12:46:05 · 1833 阅读 · 0 评论 -
年度技术盘点:50个最佳轻量级JavaScript框架和库
回顾今年已发布的JS框架和库,我们针对地筛选了一些能够提供直接和具体功能的免费JavaScript插件和库,与大家分享。它们可不是臃肿的一站式框架,而是一些轻量级,并能够帮助你更快、更容易地进行网页设计与开发的实用型框架。 正如你期望的,文中的一些插件可用来创建滑块、图片库、响应式菜单、弹出式窗口以及许多其他常见的组件。同时,你也可以发现一些能够提供独特功能的插件,像旁注工具、GIF预览、动转载 2016-12-30 20:35:21 · 4519 阅读 · 0 评论 -
深入理解javascript原型和闭包(6)——继承
为何用“继承”为标题,而不用“原型链”? 原型链如果解释清楚了很容易理解,不会与常用的java/C#产生混淆。而“继承”确实常用面向对象语言中最基本的概念,但是java中的继承与javascript中的继承又完全是两回事儿。因此,这里把“继承”着重拿出来,就为了体现这个不同。 javascript中的继承是通过原型链来体现的。先看几句代码 以上代码中,f1是Fo转载 2016-12-20 16:16:22 · 189 阅读 · 0 评论 -
深入理解javascript原型和闭包(7)——原型的灵活性
在Java和C#中,你可以简单的理解class是一个模子,对象就是被这个模子压出来的一批一批月饼(中秋节刚过完)。压个啥样,就得是个啥样,不能随便动,动一动就坏了。 而在javascript中,就没有模子了,月饼被换成了面团,你可以捏成自己想要的样子。 首先,对象属性可以随时改动。 对象或者函数,刚开始new出来之后,可能啥属性都没有。但是你可以这会儿加一个,过一会儿在转载 2016-12-20 16:17:30 · 236 阅读 · 0 评论 -
深入理解javascript原型和闭包(8)——简述【执行上下文】上
什么是“执行上下文”(也叫做“执行上下文环境”)?暂且不下定义,先看一段代码: 第一句报错,a未定义,很正常。第二句、第三句输出都是undefined,说明浏览器在执行console.log(a)时,已经知道了a是undefined,但却不知道a是10(第三句中)。 在一段js代码拿过来真正一句一句运行之前,浏览器已经做了一些“准备工作”,其中就包括对变量的声明,而不是赋值。变转载 2016-12-20 16:18:36 · 217 阅读 · 0 评论 -
深入理解javascript原型和闭包(9)——简述【执行上下文】下
继续上一篇文章(http://www.cnblogs.com/wangfupeng1988/p/3986420.html)的内容。 上一篇我们讲到在全局环境下的代码段中,执行上下文环境中有如何数据: 变量、函数表达式——变量声明,默认赋值为undefined;this——赋值;函数声明——赋值; 如果在函数中,除了以上数据之外,还会有其他数据。先看以下代码:转载 2016-12-20 16:19:23 · 223 阅读 · 0 评论 -
深入理解javascript原型和闭包(10)——this
接着上一节讲的话,应该轮到“执行上下文栈”了,但是这里不得不插入一节,把this说一下。因为this很重要,js的面试题如果不出几个与this有关的,那出题者都不合格。 其实,this的取值,分四种情况。我们来挨个看一下。 在此再强调一遍一个非常重要的知识点:在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了。因为this的取值是执行上下文转载 2016-12-20 16:20:42 · 248 阅读 · 0 评论 -
深入理解javascript原型和闭包(11)——执行上下文栈
继续上文的内容。 执行全局代码时,会产生一个执行上下文环境,每次调用函数都又会产生执行上下文环境。当函数调用完成时,这个上下文环境以及其中的数据都会被消除,再重新回到全局上下文环境。处于活动状态的执行上下文环境只有一个。 其实这是一个压栈出栈的过程——执行上下文栈。如下图: 可根据以下代码来详细介绍上下文栈的压栈、出栈过程。 如上代码。 在执转载 2016-12-20 16:21:44 · 277 阅读 · 0 评论 -
深入理解javascript原型和闭包(12)——简介【作用域】
提到作用域,有一句话大家(有js开发经验者)可能比较熟悉:“javascript没有块级作用域”。所谓“块”,就是大括号“{}”中间的语句。例如if语句: 再比如for语句: 所以,我们在编写代码的时候,不要在“块”里面声明变量,要在代码的一开始就声明好了。以避免发生歧义。如: 其实,你光知道“javascript没有块级作用域”是完全不够的,你转载 2016-12-20 16:22:21 · 208 阅读 · 0 评论 -
深入理解javascript原型和闭包(13)-【作用域】和【上下文环境】
上文简单介绍了作用域,本文把作用域和上下文环境结合起来说一下,会理解的更深一些。 如上图,我们在上文中已经介绍了,除了全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了。而不是在函数调用时确定。 下面我们将按照程序执行的顺序,一步一步把各个上下文环境加上。另外,对上下文环境不了解的朋友,可以去看看之前的两篇文章: http://www.cnblo转载 2016-12-20 16:23:10 · 236 阅读 · 0 评论 -
深入理解javascript原型和闭包(14)——从【自由变量】到【作用域链】
先解释一下什么是“自由变量”。 在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量。如下图 如上程序中,在调用fn()函数时,函数体中第6行。取b的值就直接可以在fn作用域中取,因为b就是在这里定义的。而取x的值时,就需要到另一个作用域中取。到哪个作用域中取呢? 有人说过要到父作用域中取,其实有时候这种解释会产转载 2016-12-20 16:23:54 · 297 阅读 · 0 评论 -
深入理解javascript原型和闭包(15)——闭包
前面提到的上下文环境和作用域的知识,除了了解这些知识之外,还是理解闭包的基础。 至于“闭包”这个词的概念的文字描述,确实不好解释,我看过很多遍,但是现在还是记不住。 但是你只需要知道应用的两种情况即可——函数作为返回值,函数作为参数传递。 第一,函数作为返回值 如上代码,bar函数作为返回值,赋值给f1变量。执行f1(15)时,用到了fn作用域下的max变量的值。至转载 2016-12-20 16:24:40 · 216 阅读 · 0 评论 -
深入理解javascript原型和闭包(4)——隐式原型
注意:本文不是javascript基础教程,如果你没有接触过原型的基本知识,应该先去了解一下,推荐看《javascript高级程序设计(第三版)》第6章:面向对象的程序设计。 上节已经提到,每个函数function都有一个prototype,即原型。这里再加一句话——每个对象都有一个__proto__,可成为隐式原型。 这个__proto__是一个隐藏的属性,javascript不希望转载 2016-12-20 16:00:50 · 203 阅读 · 0 评论 -
深入理解javascript原型和闭包(3)——prototype原型
既typeof之后的另一位老朋友! prototype也是我们的老朋友,即使不了解的人,也应该都听过它的大名。如果它还是您的新朋友,我估计您也是javascript的新朋友。 在咱们的第一节(深入理解javascript原型和闭包(1)——一切都是对象)中说道,函数也是一种对象。他也是属性的集合,你也可以对函数进行自定义属性。 不用等咱们去试验,javascript自己转载 2016-12-20 15:59:19 · 269 阅读 · 0 评论 -
深入理解javascript原型和闭包(2)——函数和对象的关系
上文(理解javascript原型和作用域系列(1)——一切都是对象)已经提到,函数就是对象的一种,因为通过instanceof函数可以判断。 var fn = function () { }; console.log(fn instanceof Object); // true 对!函数是一种对象,但是函数却不像数组一样——你可以说数组是对象的一种,因为数组就像是对象的一个子集转载 2016-12-20 15:57:09 · 283 阅读 · 0 评论 -
非常实用的webstorm的快捷键
Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*…*/ ) Shift+F6 重构-重命名 Ctrl+X 删除行 Ctrl+D 复制行 Ctrl+G 查找行 Ctrl+Shift+Up/Down 代码向上/下移动。原创 2017-01-03 11:53:06 · 373 阅读 · 0 评论 -
Web流布局实例
在外面的大盒子相对定位,box绝对定位。通过JavaScript控制box的位置即可实现。 html:原创 2017-01-03 15:25:04 · 399 阅读 · 0 评论 -
JavaScript获取URL汇总
URL即统一资源定位符 (Uniform Resource Locator, URL),完整的URL由这几个部分构成: scheme://host:port/path?query#fragment scheme:通信协议,常用的http,ftp,maito等。 host:主机,服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。 port:端口号,整数,可选,省略时使用方案原创 2016-12-23 15:22:33 · 303 阅读 · 0 评论 -
web 列表切换
原理:通过js更改class从而实现切换效果。 html:原创 2017-01-03 20:06:38 · 792 阅读 · 0 评论 -
JavaSript模块化
在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发? 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式。可以想象一个巨大的系统代码,被整合优化分割成逻辑性很强的模块时,对于软件是一种何等意义的存在。对于软件行业来说转载 2016-12-19 21:42:38 · 205 阅读 · 0 评论 -
javascript typeof()的用法与运算符用法
typeof 运算符 返回一个用来表示表达式的数据类型的字符串。 typeof[()expression[]] ; expression 参数是需要查找类型信息的任意表达式。 说明 typeof 运算符把类型信息当作字符串返回。typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "un转载 2016-12-19 22:32:49 · 731 阅读 · 0 评论 -
JavaScript中==和===的区别
在Javascript中有"=="和"==="两种比较运行符,那么他们有什么区别呢? 一、对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等 2)同类型比较,直接进行“值”比较,两者结果一样 二、对于Array,Object等高级类型,==和===是没有原创 2016-12-19 22:38:38 · 269 阅读 · 0 评论 -
JavaScript创建对象4种方法详解
1、工厂模式 弊端:没有解决对象的识别问题,即怎么知道一个对象的类型。 2、构造函数模式 与工厂模式相比: 1、没有显式的创建对象 2、直接将属性和方法赋给了this对象 3、没有return语句 要创建person的实例,必须使用new操作符,以这种方式调用构造函数实际上会经历4个步骤: 1、创建一个新对象 2、将构造函数的作用域赋给新对转载 2016-12-20 08:29:10 · 819 阅读 · 0 评论 -
jQuery相关问题
Jquery中 $("#" + bb)[0])是什么意思 $("#" + bb)[0] 把 jquery 对象转换成 dom 对象。 $("#"+bb)[0] 相当于document.getElementById(bb)转载 2016-12-19 23:17:27 · 290 阅读 · 0 评论 -
js 中{},[]中括号,大括号使用详解
一、{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数。 如:var LangShen = {"Name":"Langshen","AGE":"28"}; 上面声明了一个名为“LangShen”的对象,多个属性或函数用,(逗号)隔开,因为是对象的属性, 所以访问时,应该用.(点)来层层访问:LangShen.Name、LangShen.AGE,当然我们也可以用数转载 2017-01-07 15:10:23 · 929 阅读 · 0 评论 -
【深入浅出jQuery】源码浅析--整体架构
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美。 其结构明晰,高内聚、低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷、渐进增强)优雅的处理能力以及 Ajax 等方面周到而强大的定制功能无不令人惊叹。 另外,阅读源码让我接触到了大量底层的知识。对原生JS 、框架设计、代码优化有了全新的认识,接下来将会写一系列转载 2016-12-20 14:51:51 · 895 阅读 · 0 评论 -
深入理解javascript原型和闭包(1)——一切都是对象
“一切都是对象”这句话的重点在于如何去理解“对象”这个概念。 ——当然,也不是所有的都是对象,值类型就不是对象。 首先咱们还是先看看javascript中一个常用的函数——typeof()。typeof应该算是咱们的老朋友,还有谁没用过它? typeof函数输出的一共有几种类型,在此列出: function show(x) {转载 2016-12-20 15:34:51 · 273 阅读 · 0 评论 -
javascript中this的四种用法
this 在函数执行时,this 总是指向调用该函数的对象。要判断 this 的指向,其实就是判断 this 所在的函数属于谁。 在《javaScript语言精粹》这本书中,把 this 出现的场景分为四类,简单的说就是: 有对象就指向调用对象 没调用对象就指向全局对象 用new构造就指向新对象 通过 apply 或 call 或 bind 来改变 this 的所指。原创 2017-01-08 14:16:30 · 362 阅读 · 0 评论