JavaScript中this该如何理解?

this出现的地方无非两种:全局环境中和函数中。不管哪种情况,this都是执行上下文的一个属性,并且this总是返回一个对象。(1)在全局上下文中,this就是全局对象本身。(2)在函数上下文中,函数的每次调用对应this对象都可能不同。不过,关于函数中的this,我们可以记住一句结论:this对象是在函数调用时,具体代码执行以前,激活该函数上下文的执行者(比如调用该函数的对象,再比如调用该函数的外层上下文)。

More

JavaScript闭包(译)

原文: http://dmitrysoshnikov.com/ecmascript/javascript-the-core/

在ECMAScript中,函数是第一级(first-class)对象。这个术语意味着函数可以做为参数传递给其他函数(在那种情况下,这些参数叫作「函数类型参数」)。接收「函数类型参数」的函数叫作高阶函数。同样函数也可以从其他函数中返回。返回其他函数的函数叫作以函数为值的函数。

More

JavaScript作用域链(译)

原文: http://dmitrysoshnikov.com/ecmascript/javascript-the-core/

作用域(scope)控制着变量和参数的可见性生命周期

通常来说,一段程序代码中所用的变量并不是总是可用的,而限定这个变量的可用性的代码范围就是这个变量的作用域。

作用域链是一个对象列表,执行上下文中出现的标识符在这个列表中进行查找。

作用域链和原型链类似:如果一个变量在函数自身的作用域(自身的变量对象)中没有找到,那么将会查找它的父函数(外层函数)的变量对象,以此类推!

More

浅谈JavaScript链式调用

函数链式调用jQuery等框架中经常出现的一种函数调用方式,这种方式在面向对象编程中用得比较多。JavaScript的灵活性,使得实现链式调用的方式有多种,下面,我们简单地实现一下链式调用,以展示其原理。

More

JavaScript原型链

js中,除了null,每个对象都会继承另一个对象,后者称为“原型对象”。原型对象的所有属性和方法都可以被派生对象共享,这是js的继承机制。通过构造函数生成实例对象的时候,会自动给实例对象分配原型对象。实例对象生成时候的构造函数的prototype属性即为实例对象的原型对象。(在此我们需要注意原型对象是实例对象生成时的构造函数的prototype属性,因为构造函数的prototype属性后来是可以更改的,而先前生成好的实例的原型是不会跟着变的。)

More