JavaScript笔记:面向对象基础知识点
定义
一种编程思想,在程序里面用对象来描述现实中的一个具体的事务
对象
封装了一个事务的属性和功能的程序结构
本质
js中一切对象的底层都是关联数组
每个属性名和方法名都是关联数组中的元素value
每个属性值和方法都是关联数组中的key
使用面向对象的的原因
和现实中人的思维方式非常接近,便于大程序的维护
面向对象的三大特征
封装
将一个具体事务的属性和功能集中在一个对象中
只要使用了面向对象,都要先将事务的属性和功能封装到一个对象中,在反复使用对象的功能
事务的属性:会变成对象的属性
事务的功能:会变成对象的方法
创建自定义对象的方式(封装)
1、使用对象的直接量
var student = {
stuName: "ycx",
stuAge: 23,
stuSex: "male",
stuBirth: "19960716",
introduce: function() {
document.write("my name is " + this.stuName + ", i am a " + this.stuAge + "-year-old boy");
},
}
2、使用new关键字
在创建对象时,不知道对象的成员
3、构造函数
(1)定义构造函数
(2)用new调用构造函数
①创建新的空对象
②用new创建子对象时,会自动设置子对象的__proto__继承构造函数的prototype
③用新对象去调用构造函数
a、new的功能将构造函数中的this指向新对象
b、向新对象中添加构造函数规定的属性
c、将属性参数的值,保存到新对象的新属性中
④将新对象的地址保存在变量
function Individuals(name, age) {
this.name = name;
this.age = age;
}
Individuals.prototype.introduce = function() {
console.log("My name is " + this.name + ", I am a " + this.age + "-year-old person.");
}
继承
特点
父对象的成员,子对象不用重复创建,也可以直接使用
好处
节约内存,提高代码的可复用性
原型对象
专门集中存储一类子对象相同属性和功能的父对象,同一子对象所共有的属性和方法
定义方式
每创建一个构造函数,都会自动生成一个原型对象
原型链
原型本身也是个对象,因此原型对象也有原型,对象有__proto__
由多级父元素逐级继承形成的链式结构
原型链保存着所有对象的成员
作用
控制对象访问成员的使用顺序
优先使用自己的,自己没有,才沿着原型链向父级查找
自有属性和公有属性
自有属性:直接保存在本地的属性
公有属性:保存在原型对象中,被所有子对象共享的属性
内置对象的继承关系
凡是可以new的类型,都是构造函数
每个内置对象的构造函数都对应有一个内置的原型对象
内置类型的原型对象保存了该类型各自的供子对象使用的API,且这些是公有的
多态
定义
同一个事物,在不同情况下表现出来不同的状态
重写:override
如果子对象觉得父对象的成员不好用,可以在子对象本地定义同名成员,覆盖父对象的成员