初识Javascript的面向对象

时间:2022-07-29 17:26:06

面向对象编程概念—————————————————————–

用对象的思想去写代码,就是面向对象编程
过程式写法
面向对象写法

我们一直都在使用对象
数组 Array 时间 Date

面向对象编程(OOP的特点)—————————————————————-

抽象:抓住核心问题
封装:只能通过对象来访问方法
继承:从已有对象上继承出新的对象
多态:多对象的不同形态

对象的组成——————————————————————-

方法(行为、操作)——函数:过程、动态的

属性——变量:状态、静态的

工厂方式——————————————————————–

工厂方式就是面向对象中的封装函数

改成与系统对象类似写法
首字母大写
New 关键字提取 当new关键字调用一个函数时,那么函数中的this指向new创建
的这个对象,而且函数的返回值直接就是this了。(隐式返回)


构造函数 new后面调用的函数
用来创建对象的函数,叫做构造函数

存在的问题
对象的引用 : 对象的赋值不仅仅是值的复制,也是引用的传递
浪费内存 : 构造函数的属性如果是引用的话,当new了很多相应对象时,
也引用了很多内存块,造成浪费,应该让这些相同的引用指向一个内存块。

类似于
var a=[1,2,3];
var b=[1,2,3];
var c=[1,2,3];

优化为
var a=b=c=[1,2,3];

原型prototype——————————————————————–

概念
改写对象下面公用的方法或者属性,让公用的方法或属性在内存中存在一份
好处:提高性能。

学习原型
类比
原型 : CSS中的Class ,重用的样式写在class里面,调用class就能得到相应样式

普通方法 :CSS中的style,每次要得到相应的样式时style都要重新写

如果一个对象同时拥有同名的原型方法和普通方法,那么普通方法
的优先级比较高(相当于重写)

写法
构造函数名.原型.[方法|属性]
原型 prototype 要写在构造函数的下面.

通过原型改写工厂方式
原则
相同的属性和方法可以加载原型上
混合的编程模式

总结面向对象写法
构造函数加属性,原型加方法

function 构造函数(){
this.属性;
}
构造函数.原型.方法1 = function(){};
构造函数.原型.方法2 = function(){};

var 对象1 = new 构造函数名();
对象1.方法2();
var 对象2 = new 构造函数名();
对象2.方法1();

面向对象的选项卡———————————————————————

原则
先写出普通的写法,然后改成面向对象写法
普通方法变型
尽量不要出现函数嵌套函数
可以有全局变量
把onload中不是赋值的语句放到单独函数中

改成面向对象
全局变量就是属性
函数就是方法
Onload中创建对象
改this指向问题:事件或定时器的时候
尽量让面向对象中的this指向对象。