JavaScript面向对象 - 面向对象和构造函数

面向对象和构造函数

概述

面向对象是什么

面向对象编程的全称为 Object Oriented Prograrnming,简称为 OOP。面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。

面向对象编程可以看作是使用一系列对象相互协作的软件设计。面向对象程序设计的目的是在编程中促进更好的灵活性和可维护性。凭借其对模块化的重视,面向对象的代码开发更简单,更容易理解。
所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,提高复用率。

面向对象编程的三个主要特征是:

  1. 封装
  2. 继承
  3. 多态

JavaScript是一种基于原型的面向对象语言,而不是基于类的。

封装

所谓封装就是按照要求使用并得到对应的结果,而不需要知道其真实的执行原理是怎么样的。

继承

继承通常是指类与类之间的关系。如果两个类都有相同的属性或方法,那么可以让一个类继承于另一个类,这样就不需要在前者再次定义同样的属性或方法。

多态

不同的对象可以定义具有相同名称的方法,方法是作用于所在的对象中。这种不同对象通过相同方法的调用实现各自行为的能力,被称之为多态。

构造函数

构造函数

构造函数又称为构造器对象或对象模板,是对象中的一个方法,在实例化时构造器被调用。

function Person(){
	console.log('Person instantiated');
}

var person = new Person();
  • 这里的Person()并不是作为函数,而是构造函数。
  • 创建person对象需要使用new关键字。

构造函数的属性

构造函数的属性实际上就是对象的变量。一个对象可以包含多个属性,定义构造函数的属性时使用this关键字。

function Person(firstName){
	this.firstName = firstName;
	console.log('Person instantiated');
}

var person = new Person('Alice');
console.log('person is' + person.firstName);

构造函数的方法

构造函数的方法很像构造函数的属性,不同的是方法是一个函数 (或者像函数一样被定义) 。定义构造函数的方法时使用this关键字。

var Person = function(sirstName){
	this.firstName = firstName;
	this.sayHello = function(){
        console.log("Hello,I'm"+this.firstName);
    };
};

var person = new Person("Alice");
person.sayHello();

this关键字

JavaScript有一套完全不同于其它语言的对this的处理机制。this关键字本身没有任何含义,在如下几种不同的情况下,this指向的各不相同。

  • 全局范围内:this关键字会指向全局对象。
this.a = 10;//global.a=10
console.log(a);//10
  • 构造函数内:this关键字会指向新创建的对象。
  • 构造函数的方法内:this关键字会指向当前对象。
var hero = {};
hero.sayName = function(){
    retuen "Hello" + this.name;
};
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页