JavaScript面向对象编程

1、什么是面向对象

面向对象编程 —— Object Oriented Programming,简称 OOP ,是一种编程开发思想。它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。

  • 面向对象的特性
    封装、继承、多态

2、对象的创建

通过构造函数创建对象。

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

此时,设计了一个代表人的类,具有name和age两个属性。创建这个类的对象可以通过new关键字实现。

//	创建两个实例对象
var per1 = new Person("小明", 16);
var per2 = new Person("小红", 20);

此时per1和per2是两个不同的对象,但同属于Person这个类。

3、原型

同属一个类的对象会有一些共同的方法,如人会有吃饭的行为,这种方法为整个类的所有对象共同拥有,此时可以通过为类的构造函数的原型添加方法,实现此方法由类的所有对象共享的目的。

//  通过构造函数的原型添加方法,该方法为所有对象共享使用
Person.prototype.eat = function (){
  console.log("Hold On, Pain Ends.")
};

此时会发现per1和per2两个对象同时具有了eat()方法。

per1.eat();
per2.eat();

实际上,此方法在类的原型中。

4、原型、原型对象和实例对象

  1. 构造函数可以实例化对象
    构造函数中有一个prototype的属性,即原型对象。
  2. 构造函数的原型对象中有一个constructor构造器,这个构造器指向的是其所在的原型对象所在的构造函数。
    构造函数的原型对象中的方法可以被实例对象直接访问。
  3. 实例对象的原型对象(prototype)指向的是该构造函数的原型对象。
  4. 实例对象中使用的属性或方法,首先在实例对象中去找,找到则使用;找不到则在实例对象所在构造函数的原型对象中找,找到则使用,找不到则报错。

5、原型链

当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象(object)都有一个私有属性(称之为 proto )指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象(proto),层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。

原型对象使用建议

  • 私有成员(一般就是非函数成员)放到构造函数中
  • 共享成员(一般就是函数)放到原型对象中
  • 如果重置了 prototype 记得修正 constructor 的指向
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值