一、存储在对象属性中的函数被称为“方法”。
二、当我们在代码中用对象表示实体时,就是所谓的面向对象编程(Object Oriented Programming),简称为 “OOP”。
方法简写
一、在对象字面量中,有一种更短的(声明)方法的语法:
// 这些对象作用一样
user = {
sayHi: function() {
alert("Hello");
}
};
// 方法简写看起来更好,对吧?
let user = {
sayHi() { // 与 "sayHi: function()" 一样
alert("Hello");
}
};
1、如上所示,我们可以省略”function”,只写sayHi()。
2、说实话,这种表示法还是有些不同。在对象继承方面有一些细微的差别,但目前它们并不重要。在几乎所有的情况下,较短的语法是首选的。
方法中的 “this”
【见】this#方法中的“this”:https://www.yuque.com/tqpuuk/yrrefz/gcb2wp
构造器中的方法
一、使用构造函数来创建对象会带来很大的灵活性。构造函数可能有一些参数,这些参数定义了如何构造对象以及要放入什么。
二、我们不仅可以将属性添加到this中,还可以添加方法。
【示例1】下面的new User(name)用给定的name和方法sayHi创建了一个对象:
function User(name) {
this.name = name;
this.sayHi = function() {
alert( "My name is: " + this.name );
};
}
let john = new User("John");
john.sayHi(); // My name is: John
/*
john = {
name: "John",
sayHi: function() { ... }
}
*/
定义方法
一、一个方法是关联到某个对象的函数,或者简单地说,一个方法是一个值为某个函数的对象属性。
二、定义方法就像定义普通的函数,除了它们必须被赋给对象的某个属性。
objectName.methodname = function_name // ObjectName是一个已经存在的对象,methodname是方法的名称,function_name是函数的名称
var myObj = {
method: function (params) {
// ...do something
}
// 或者这样写
myOtherMehod (params) {
// ...do something else
}
}
// 调用
object.methodname(params)
三、可以在对象的构造函数中包含方法定义来为某个对象类型定义方法
【实例1】可以为之前定义的car对象定义一个函数格式化并显示其属性
function Car (make, model, year, owner) {
this.make = make
this.model = model
this.year = year
this.owner = owner
this.displayCar = displayCar // 在对象定义中将displayCar函数变成Car的方法
// this指代方法所属的对象
}
function displayCar () {
var result = `A Beautiful ${this.year} ${this.make} ${this.model}`
pretty_print(result)
}
// 每个对象调用displayCar方法
car1.displayCar()
car2.displayCar()