天天看点

什么是js面向对象,特点,怎么写构造函数

什么是JS面向对象

  1. 首先,什么是对象,简单的来理解,对象是指一个整体,对外提供一些操作,比如空调,电视机等等;面向对象的意思就是,使用对象的时候,你可以直接使用它所提供的功能而忽略其内部组成情况。好比如你不知道电视机是怎么运作的,也不知道它是由什么零件组成的,但你知道拿到遥控就可以操作电视机,这就是一种面向对象的思想。
  2. js中面向对象的特点:

    抽象、封装、继承、多态。

    抽象:表示对问题领域进行分析、设计中得出的抽象的概念,抓住核心问题。

    封装:封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。

    继承:继承主要实现重用代码,节省开发时间。包括对象方法和属性的继承。

    多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

怎样写构造函数

1.什么是构造函数

构造函数就是构造对象的函数。使自己的对象多次复制,当对象被实例化后,构造函数会立即执行它所包含的任何代码。

2.工厂模式

该模式抽象了创建对象的具体过程,用函数来以特定接口创建对象的细节

例如:

<script>
function createPerson(name, qq)
{
    //原料
    var obj=new Object();
    //加工
    obj.name=name;
    obj.qq=qq;
    obj.showName=function ()
    {
        alert('我的名字叫:'+this.name);
    };
    obj.showQQ=function ()
    {
        alert('我的QQ号:'+this.qq);
    };
    //出厂
    return obj;
}
var obj=createPerson('blue', '258248832');
obj.showName();
obj.showQQ();
var obj2=createPerson('张三', '45648979879');
obj2.showName();
obj2.showQQ();
</script>
           

工厂方式的问题:使用工厂模式能够创建一个包含所有信息的对象,可以无数次的调用的这个函数。虽然其解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即如何得知一个对象的类型)

3.构造函数模式

function Person(name,sex,age) {//注意这里 构造函数首字母大写
 this.name = name;
 this.sex = sex;
 this.age = age;
 this.info = function () {
    console.log(this.name, this.age, this.sex);
 }
}
var p1 = new Person('帅哥','男','20');
 p1.info();
var p2 = new Person('美女','女','18');
 p2.info();
           

注意构造函数与工厂模式有些不同的地方,如下:

构造函数首字母大写,没有显式地创建对象,将属性和方法赋值给了 this 对象,没有return语句

而且以这种方式来调用构造函数会大致经历以下几个步骤:

1)创建一个新的对象

2)将构造函数的作用域赋值给这个对象(因此this就指向了这个对象)

3)执行构造函数中的代码(即给新对象添加属性和方法的过程)

4)返回对象