Javascript面向对象
一.Javascript对象
1.对象基础
对象是一个包含相关数据和方法的集合,通常由一些变量和函数组成,我们称之为对象里面的属性和方法。
一个对象由多个成员组成,每个成员都有一对键值对,需要用逗号隔离成员。
2.点表示法和括号表示法
const person = {
name: ["张三", "李四"],
age: 32,
};
那么,点表示法为: person.age;
括号表示法为:person["age"];
3.设置对象成员
设置成员不仅仅可以更新已经存在的属性的值和方法,还可以创建新的成员。
person.age = 18;//更新已有的成员
person["eyes"] = "黑色";//创建新的成员
4.构造函数
如果我们不想编写每一个需要使用的对象,而是希望对象是可复用的。那么我们需要用到构造函数。
构造函数只是使用new关键字调用的函数。当调用构造函数时,它将:
- 创建一个新对象
- 将this绑定到新对象,以便可以在构造函数代码中引用this
- 运行构造函数中的代码
- 返回新对象
二.对象原型
1.原型链
JS 中所有的对象都有一个内置属性,称为它的 prototype(原型)。它本身是一个对象,故原型对象也会有它自己的原型,逐渐构成了原型链。原型链终止于拥有null作为其原型的对象上。
当访问一个对象的属性时,如果在对象本身中找不到该属性,就会在原型中搜索该属性。如果仍然找不到该属性,那么就搜索原型的原型,以此类推,直到找到该属性,或者到达链的末端,在这种情况下,返回undefined。
2.设置原型
2.1 使用Object.create()
Object.create() 方法创建一个新的对象,并允许你指定一个将被用作新对象原型的对象。
2.2 使用构造函数
在JS中,所有的函数都有一个名为prototype的属性。当你调用一个函数作为构造函数时,这个属性被设置为新构造对象的原型。
三. Javascript 中的类
1.类和构造对象
class Dog {
name;
constructor(name) {
this.name = name;
}
myDog() {
console.log(`小狗的名字是 ${this.name}`);
}
}
使用class来声明一个类,在这个Dog类中,有一个name属性;一个需要name参数的构造函数,这一参数用于初始化新的对象的name属性;一个myDog() 方法,使用this 引用了对象的属性。
2.继承
使用extends关键字来声明这个类继承自另一个类。
3.分装
如何封装:将零散的的语句写进函数的花括号内,成为函数体,然后就可以调用了。
4.多态
同一操作,作用于不同的对象,可以有不同的解释,产生不同的执行结果。多态最常见的2种实现方式:重写,重载。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。