
javascript
飞鹰再现
专注信息化,智能制造系统化产品开发与解决方案的研究。先任职一家企业产品架构师。喜爱架构设计,产品研发。Dont repeat yourself.
展开
-
正则表达式-正则表达式的元字符
元字符是使用正则表达式不同于普通字符的地方,也是正则表达式能够发挥强大作用、具有强大表达能力的法宝。那么什么是元字符呢?元字符是一些在正则表达式中有特殊用途、不代表它本身字符意义的一组字符。利用元字符,我们可以控制字符串匹配的方式,例如:只在每一行的开始或结束位置匹配指定的模式,匹配固定距离的子串,匹配不出现的字符等等。如果要在正则表达式中使用元字符本身的意义,例如:如果想搜索字符串中的?转载 2016-10-21 18:57:57 · 4553 阅读 · 0 评论 -
正则表达式-创建正则表达式
正则表达式就是一个字符模式。和String对象类似,在JavaScript中正则表达式也是一个对象,它主要用于字符串的模式匹配。创建正则表达式有两种方式:隐式创建(文字量方法)和显示创建(使用构造函数)。 隐式创建正则表达式使用隐式方法创建正则表达式的方法为:将文字量的正则表达式赋值给一个变量。正则表达式是包含在两个斜杠之间的一个或多个字符,在后一个斜杠的后面,可以指定一个或多个选转载 2016-10-21 18:56:35 · 2626 阅读 · 0 评论 -
JavaScript闭包-块级作用域和私有变量
块级作用域块级作用域是指在由花括号包裹的代码块中的作用域。在JavaScript中是没有块作用域的。为了理解这个概念,来看下面的例子:for(vari = 0;i ......}alert(i); //结果会输出10 上面的代码中,我们在for循环中定义了变量i,在C++和Ja转载 2016-10-21 18:34:04 · 1389 阅读 · 0 评论 -
JavaScript闭包-闭包中的变量和this对象
在JavaScript中作用域链的机制会引发一些副作用:闭包只能够获取包含函数中任何变量的最后一个值。在使用闭包的时候,我们一定要注意变量值的问题,因为这是经常会出错的地方。下面我们以一个非常极端的例子来说明这个问题,在实际开发中我们一般不会这样编写代码。这个例子的代码如下:function fn1(){ vararr = newA转载 2016-10-21 16:51:59 · 1901 阅读 · 0 评论 -
JavaScript闭包-闭包的作用域
闭包(closure)是JavaScript中的一个十分重要的概念。闭包是指在另一个作用域中保存了一份它从上级函数或作用域取得的变量(键值对),而这些键值对是不会随着上一级函数的执行完闭而被销毁的。闭包从本质上来说是在讨论一个对象的成员属性何时被GC(垃圾回收机制)处理的问题。我们其实在前面的函数的传值中就已经接触了闭包。在讲解函数的传值时我们列举了一个比较对象属性的函数sortByPro转载 2016-10-21 16:19:50 · 559 阅读 · 0 评论 -
JavaScript闭包-匿名函数和函数的作用域链
匿名函数在理解JavaScript的闭包之前,我们有必要了解一下JavaScript中函数的执行顺序。我们前面说过,定义函数有多种方式,其中最常用的是下面的两种方式。/* 定义函数的第一种方式 */function fn1(){ alert("fn1");} /* 定义函数的第二种方式 */var f转载 2016-10-21 08:55:35 · 666 阅读 · 0 评论 -
JavaScript面向对象-基于原型链和函数伪装组合的方式实现继承
上文提到我们不会单独使用基于函数伪造的方式实现继承,而是会使用基于原型链和函数伪装组合的方式实现继承。这种继承方式也叫伪经典继承,它的思想是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,既通过在原型上定义方法实现了函数的复用,又能够保证每个实例都有它自己的属性。来看下面的例子,我们先列出基于原型链和函数伪装组合的方式实现继承完整的代码,然后再对代码中转载 2016-10-19 08:17:49 · 461 阅读 · 0 评论 -
JavaScript面向对象-基于函数伪造的方式实现继承
由于基于原型链实现继承的方式存在一些缺点,所以人们采用了另外一种方式来实现继承——基于函数伪造的方式实现继承。这个技术的思想是在子类构造函数的内部调用父类的构造函数。 基于函数伪造的方式实现继承的实现方式因为在JavaScript中,函数是在特定环境中执行代码的对象,所以我们可以使用call()或apply()方法来在子类对象上执行父类对象的构造函数。来看下面的例子:转载 2016-10-18 18:42:57 · 354 阅读 · 0 评论 -
JavaScript深入理解函数 - 函数的属性
在上一篇文章中我们介绍了函数的内部属性,因为函数是对象,所以函数也有自己的属性和方法。每个函数都包括两个属性:length和prototype。length属性表示函数希望接收参数的个数,prototype属性是函数的原型。 length属性函数的length属性表示函数希望接收参数的个数。例如下面的代码:function fn1(num1)转载 2016-10-18 18:33:52 · 374 阅读 · 0 评论 -
JavaScript面向对象-原型的重写
在上一篇文章中我们介绍了原型的内存模型,通过4张图分析了原型在各个阶段的状态。下面我们将首先要介绍一些常用的原型和对象属性的检测方法。我们还是以上一篇文章的Person类为例子,创建Person类的代码如下:function Person(){}; Person.prototype.name = "Leon";Person.proto转载 2016-10-18 09:53:27 · 1410 阅读 · 0 评论 -
JavaScript面向对象-原型的内存模型
在JavaScript中,每一个函数都有一个prototype(原型)属性,该属性是一个对象,它的作用是使特定类型的所有对象实例可以共享它所包含的属性和方法。原型是JavaScript中非常特殊的一个对象,当一个函数创建之后,会随之产生一个原型对象,当通过这个函数的构造函数创建了一个具体的对象之后,在这个具体的对象中,就会有一个属性指向原型。下面的代码演示了通过原型创建JavaSc转载 2016-10-17 19:01:23 · 1758 阅读 · 1 评论 -
JavaScript深入理解函数 - 函数的定义
在JavaScript中,函数是一个非常特殊的对象。每一个函数都是一个Function类型的实例,它们和其它引用类型一样具有属性和方法。由于函数是对象,所以函数名实际上是一个指向函数的指针,不会与某个函数绑定。函数在内存中存储的操作其实是通过一个键值对来存储的。我们可以通过下面的方式来定义一个函数:function fn1(){ conso转载 2016-10-17 18:42:27 · 424 阅读 · 0 评论