五. 函数

1. 函数定义:关键字+函数名

// JavaScript
function 函数名(参数) {
    ...
    return ... //如果没有`return`,函数返回值就是`undefined`
}

2. 构造函数

// JavaScript
function 函数名(参数1, 参数2, ...) {
    this.属性1 = 参数1,
        this.属性2 = 参数2,
    ...
    this.方法1 = function (参数) {
      ...
        return ...
    }
    ...
}
//new是一个用于构造函数的关键字
var example1 = new 函数名(参数1, 参数2, ...)
var example1 = new 函数名(参数1, 参数2, ...)
...
  • this就指代当前这个对象,可以用this来获取当前对象的属性、方法
  • this 不是变量,是关键词,所以无法改变 this 的值

3. 箭头函数

  • 箭头函数允许使用简短的语法来编写函数表达式
  • 不需要 function 关键字、return 关键字和花括号
// JavaScript
// ES5
var x = function (x, y) {
    return x * y;
}

// ES6
const x = (x, y) => x * y;

Tips: 箭头函数没有自己的 this

4. 函数参数

4.1 参数默认

如果调用参数时省略了参数(少于被声明的数量),则丢失的值被设置为:undefined

4.2 arguments 对象

  • 如果函数调用的参数太多(超过声明),则可以使用 arguments 对象来获得这些参数
  • arguments 对象包含函数调用时使用的参数数组

4.3 参数通过值传递&对象是由引用传递的

  • 如果函数改变了参数的值,它不会改变参数的原始值
  • 参数的改变在函数之外是不可见
  • 如果函数改变了对象属性,它也改变了原始值
  • 对象属性的改变在函数之外是可见的。

六. 对象

1. 对象定义

1.1 对象文字

// JavaScript
var 变量名 = {
    属性: 属性值,//不同的属性用逗号分隔
    ...
    //声明方法省略'function'
    函数名(){
        ...
    }
}

1.2 关键词 new

// JavaScript
var person = new Object();
person.firstName = "Bill";
person.lastName = "Gates";
person.age = 50;
person.eyeColor = "blue";

2. 调用函数的属性

对象.属性 or 对象[属性]

3. 调用函数的方法

对象.函数名()