js 学习笔记

测试

对象

JavaScript 中只有对象的概念,对象可以有各种属性 因此可以实现类似 python 中 dict 的功能

两种形式效果上是等价的:

1
2
3
4
5
// 点表示法 (dot notation)
obj.name = "Simon";

// 括号表示法 (bracket notation)
obj["name"] = "Simon";

注意:点表示法,属性不能是预留关键字(eg. for)

1
2
obj.for = "Simon"; // 语法错误,因为 for 是一个预留关键字
obj["for"] = "Simon"; // 工作正常

备注: 从 ECMAScript 5 开始,预留关键字可以作为对象的属性名(reserved words may be used as object property names “in the buff”)。这意味着当定义对象字面量时不需要用双引号了。参见 ES5 Spec.

数组

注意,Array.length 并不总是等于数组中元素的个数,如下所示:

1
2
3
var a = ["dog", "cat", "hen"];
a[100] = "fox";
a.length; // 101

C 风格块作用域

创建立即执行的匿名函数,限制变量的作用域在函数内

1
2
3
4
5
6
7
8
9
var a = 1;
var b = 2;
(function () {
  var b = 3;
  a += b;
})();

a; // 4
b; // 2

函数的.apply()

JavaScript 允许你通过任意函数对象的 apply() 方法来传递给它一个数组作为参数列表。

调用函数的 apply 方法,可以指定函数中的 this 对象

1
2
var o = {}; // 创建一个对象
sconstructor.apply(o, args);
Licensed under CC BY-NC-SA 4.0