JS面向对象

313 阅读2分钟

什么是面向对象

1. 对象

对象是一个整体,对外提供一些操作。

2. 面向对象:

使用对象时,只关注对象提供的功能,不关注其内部细节。

面向对象是一种通用思想,并非只有编程中能用,任何事情都可以用。

JS中的面向对象

1. 面向对象编程(OOP)的特点

  • 抽象:抓住核心问题,把最主要的特征/跟问题相关的特征抽出来。
  • 封装:用对象的人不需要考虑内部实现,只考虑功能使用。写对象的人才需考虑内部实现。
  • 继承:从已有对象上,继承出新的对象。

2.对象的组成

  • 方法——函数:过程、动态的
  • 属性——变量:状态、静态的

为对象添加方法和属性

this:

当前的方法属于谁,this就是谁。(the current object the code is being written inside)

(全局的方法属于window)

不能在系统对象中随意附加方法、属性,否则会覆盖已有方法、属性。

原型——prototype

1.什么是原型

  • 原型类似于class,修改他可以影响一类元素
  • 在已有对象中加入自己的属性、方法
  • 原型修改对已有对象的影响

2.为Array添加sum方法

Array.prototype.sum=function (){code};

此时,所有Array类的对象都可以使用sum这个方法(函数)。

  • 给对象添加方法,类似于行间样式。
  • 给原型添加方法,类似于class。

用构造函数加属性,原型加方法。

function CreatePerson(name, qq)		//构造函数
{
	this.name=name;
	this.qq=qq;
}

CreatePerson.prototype.showName=function ()	//原型
{
	alert('我的名字叫:'+this.name);
};

CreatePerson.prototype.showQQ=function ()
{
	alert('我的QQ号:'+this.qq);
};

用混合方式构造对象

  • 构造函数:加属性
  • 原型:加方法
  • 对象命名规范:类名首字母大写
function createPerson(name, qq)		//构造函数
{
	//系统偷偷替咱们做:
	//var this=new Object();
	
	//加工
	this.name=name;
	this.qq=qq;
	
	//也会偷偷做一些:
	//return this;
}
createPerson.prototype.showName=function ()	//原型
{
	alert('我的名字叫:'+this.name);
};

createPerson.prototype.showQQ=function ()
{
	alert('我的QQ号:'+this.qq);
};
var obj1=new createPerson('gloucester', '123@gmail.com');
var obj2=new createPerson('张三', '45648979879');
obj1.showName();
obj1.showQQ();

obj2.showName();
obj2.showQQ();

执行上面的代码浏览器会依次弹出四条提示,例:

image.png

image.png


关于js的对象系统,看到这样一张图。

image.png