一、存储在对象属性中的函数被称为“方法”。
二、当我们在代码中用对象表示实体时,就是所谓的面向对象编程(Object Oriented Programming),简称为 “OOP”。

方法简写

一、在对象字面量中,有一种更短的(声明)方法的语法:

  1. // 这些对象作用一样
  2. user = {
  3. sayHi: function() {
  4. alert("Hello");
  5. }
  6. };
  7. // 方法简写看起来更好,对吧?
  8. let user = {
  9. sayHi() { // 与 "sayHi: function()" 一样
  10. alert("Hello");
  11. }
  12. };

1、如上所示,我们可以省略”function”,只写sayHi()。
2、说实话,这种表示法还是有些不同。在对象继承方面有一些细微的差别,但目前它们并不重要。在几乎所有的情况下,较短的语法是首选的。

方法中的 “this”

【见】this#方法中的“this”:https://www.yuque.com/tqpuuk/yrrefz/gcb2wp

构造器中的方法

一、使用构造函数来创建对象会带来很大的灵活性。构造函数可能有一些参数,这些参数定义了如何构造对象以及要放入什么。
二、我们不仅可以将属性添加到this中,还可以添加方法。
【示例1】下面的new User(name)用给定的name和方法sayHi创建了一个对象:

  1. function User(name) {
  2. this.name = name;
  3. this.sayHi = function() {
  4. alert( "My name is: " + this.name );
  5. };
  6. }
  7. let john = new User("John");
  8. john.sayHi(); // My name is: John
  9. /*
  10. john = {
  11. name: "John",
  12. sayHi: function() { ... }
  13. }
  14. */

定义方法

一、一个方法是关联到某个对象的函数,或者简单地说,一个方法是一个值为某个函数的对象属性。
二、定义方法就像定义普通的函数,除了它们必须被赋给对象的某个属性。

  1. objectName.methodname = function_name // ObjectName是一个已经存在的对象,methodname是方法的名称,function_name是函数的名称
  2. var myObj = {
  3. method: function (params) {
  4. // ...do something
  5. }
  6. // 或者这样写
  7. myOtherMehod (params) {
  8. // ...do something else
  9. }
  10. }
  11. // 调用
  12. object.methodname(params)

三、可以在对象的构造函数中包含方法定义来为某个对象类型定义方法
【实例1】可以为之前定义的car对象定义一个函数格式化并显示其属性

  1. function Car (make, model, year, owner) {
  2. this.make = make
  3. this.model = model
  4. this.year = year
  5. this.owner = owner
  6. this.displayCar = displayCar // 在对象定义中将displayCar函数变成Car的方法
  7. // this指代方法所属的对象
  8. }
  9. function displayCar () {
  10. var result = `A Beautiful ${this.year} ${this.make} ${this.model}`
  11. pretty_print(result)
  12. }
  13. // 每个对象调用displayCar方法
  14. car1.displayCar()
  15. car2.displayCar()