资讯专栏INFORMATION COLUMN

JS中的面向对象编程

lunaticf / 3457人阅读

摘要:一面向对象编程面向对象编程是一种抽象方式创建模型的编程方式。继承我们实现一个子类,继承汽车类将类的属性和方法赋值给继承汽车类的原型链创建子类实例以上是中的面向对象编程的简单介绍,如有错误,欢迎指出。

一.面向对象编程
面向对象编程(OOP--Object Oriented Programming)是一种抽象方式创建模型的编程方式。继承,封装,多态是OOP的三大基本特征。许多主流编程语言都支持OOP。例如Java,c++中通过new调用‘类’来创造实例,但是学习了JS的同学知道JS中没有类的概念,那么JS怎么实现面向对象编程的呢?
JS实现OOP是通过原型链实现的,原型链的概念在这里不详细讲述,大家记住一个例子即可:

function._proto_ ==== Function.prototype

JS也通过new来创建实例,但是后面调用的不是类,而是构造函数。
下面我们通过封装继承一个‘类’的例子来详细阐述。
二.ES5实现封装 继承一个类
1.封装
我们知道宝马,奔驰,奥迪等都是汽车,汽车这个概念就是一个类,抽象出来代表了日常生活中的许多具体事物。

//汽车 构造函数
function Car (name,color){
this.name = name;
this.color = color;
}

2.prototype模式
汽车的属性有很多,不仅仅是名字和颜色,如果全部写在构造函数里,创建实例时再去一一地调用太过于麻烦,于是JS规定了一个prototype模式,每个构造函数都有一个prototype属性指向原型,“类”里面一些共有的属性可以放在原型里面。例如汽车类的车型,动能方式等属性都是共有属性可以放在原型里。

Car.prototype.type = "car";

Car.prototype.getType = function () {
  return this.type;
};

Car.prototype.setType = function (newType) {
  this.type = newType;
  return newType;
};

Car.prototype.getName = function () {
  return this.name;
};

Car.prototype.setName = function (newName) {
  this.name = newName;
  return newName;
};

3.new关键字
JS中通过new关键字创建实例。

 var car1 = new Car("宝马","red");
console.log(car1.type) // "car"

这里,我们思考一个问题:使用new创建实例,new到底做了些什么呢?
使用new创建实例,实际上是帮助我们减少了四行代码:
1.new创建了临时对象,可以使用this访问到临时对象
2.new也帮我们return了这个临时对象
3.new指定了原型的名字--prototype
4.new创建实例,自动绑定原型。

car1._proto_ === Car.prototype

4.继承
我们实现一个‘子类’,继承‘汽车类’

function SUV ( price) {
 Car.call(this, "suv");   // 将 Car 类的属性和方法赋值给 SUV
  this.price = price;
}
SUV.prototype = new Car("suv");// 继承汽车类的原型链


SUV.prototype.getPrice = function () {
  return this.price;
};
SUV.prototype.setPrice = function (newPrice) {
  this.price = newPrice;
  return newPrice;
};
//创建子类实例
var suv1 = new SUV(1000);
console.log(suv1.getPrice());//1000

以上是JS中的面向对象编程的简单介绍,如有错误,欢迎指出。
参考链接:
Javascript继承机制的设计思想--阮一峰
JS中的new到底是干什么的?---方应杭

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107042.html

相关文章

  • JS中的面向对象编程

    摘要:一面向对象编程面向对象编程是一种抽象方式创建模型的编程方式。继承我们实现一个子类,继承汽车类将类的属性和方法赋值给继承汽车类的原型链创建子类实例以上是中的面向对象编程的简单介绍,如有错误,欢迎指出。 一.面向对象编程面向对象编程(OOP--Object Oriented Programming)是一种抽象方式创建模型的编程方式。继承,封装,多态是OOP的三大基本特征。许多主流编程语言都...

    hersion 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    李昌杰 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    Lyux 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    AaronYuan 评论0 收藏0
  • 解决js面向对象编程的难题

    摘要:一面向对象编程简介定义,简称,是一种程序设计思想。好处维护简单模块化是面向对象编程中的一个特征。可扩充性面向对象编程从本质上支持扩充性。 一、面向对象编程简介 1.定义: Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。 2.好处: (1)、维护简单:模块化是面向对象编程中的一个...

    ermaoL 评论0 收藏0

发表评论

0条评论

lunaticf

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<