摘要:
尽管 JavaScript 支持一对花括号创建的代码段,但是并不支持块级作用域; 而仅仅支持 函数作用域。 function test() { // 一个作用域 for(var i = 0; i < 10; i++) { // 不是一个作用域 // count } console.log(i); / 阅读全文
摘要:
JavaScript 中的构造函数和其它语言中的构造函数是不同的。 通过 new 关键字方式调用的函数都被认为是构造函数。 在构造函数内部 - 也就是被调用的函数内 - this 指向新创建的对象 Object。 这个新创建的对象的 prototype 被指向到构造函数的 prototype。 如果 阅读全文
摘要:
JavaScript 中每个函数内都能访问一个特别变量 arguments。这个变量维护着所有传递到这个函数中的参数列表。 注意: 由于 arguments 已经被定义为函数内的一个变量。 因此通过 var 关键字定义arguments 或者将arguments 声明为一个形式参数, 都将导致原生的 阅读全文
摘要:
闭包是 JavaScript 一个非常重要的特性,这意味着当前作用域总是能够访问外部作用域中的变量。 因为 函数 是 JavaScript 中唯一拥有自身作用域的结构,因此闭包的创建依赖于函数。 模拟私有变量 这里,Counter 函数返回两个闭包,函数 increment 和函数 get。 这两个 阅读全文
摘要:
JavaScript 有一套完全不同于其它语言的对 this 的处理机制。 在五种不同的情况下 ,this 指向的各不相同。 全局范围内 当在全部范围内使用 this,它将会指向全局对象。 译者注:浏览器中运行的 JavaScript 脚本,这个全局对象是 window。 函数调用 这里 this 阅读全文
摘要:
和 in 操作符一样,for in 循环同样在查找对象属性时遍历原型链上的所有属性。 注意: for in 循环不会遍历那些 enumerable 设置为false 的属性;比如数组的length 属性。 // 修改 Object.prototype Object.prototype.bar = 1 阅读全文
摘要:
函数是JavaScript中的一等对象,这意味着可以把函数像其它值一样传递。 一个常见的用法是把匿名函数作为回调函数传递到异步函数中。 函数声明 function foo() {} 上面的方法会在执行前被 解析(hoisted),因此它存在于当前上下文的任意一个地方, 即使在函数定义体的上面被调用也 阅读全文
摘要:
为了判断一个对象是否包含自定义属性而不是原型链上的属性, 我们需要使用继承自 Object.prototype 的 hasOwnProperty 方法。 注意: 通过判断一个属性是否undefined 是不够的。 因为一个属性可能确实存在,只不过它的值被设置为undefined。 hasOwnPro 阅读全文
摘要:
http://bonsaiden.github.io/JavaScript-Garden/zh/#object.prototype 阅读全文
摘要:
JavaScript 中所有变量都可以当作对象使用,除了两个例外 null 和undefined。 一个常见的误解是数字的字面值(literal)不能当作对象使用。这是因为 JavaScript 解析器的一个错误, 它试图将点操作符解析为浮点数字面值的一部分。 有很多变通方法可以让数字的字面值看起来 阅读全文