面向对象

XiLaiTL大约 2 分钟

面向对象

所有事物都是对象

JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。

  • 布尔型可以是一个对象。
  • 数字型可以是一个对象。
  • 字符串也可以是一个对象
  • 日期是一个对象
  • 数学和正则表达式也是对象
  • 数组是一个对象
  • 甚至函数也可以是对象

所有对象都有它的类,对象是类的一个实例

通过类可以构造出新的相似的对象

类由两部分组成:方法和属性。方法也就是类里的函数。

function方式类:对象构造器

声明

事实上这一个function既是类,又是这个类的初始化方法(即用new调用)。

相当于Java类里的同名方法(用于初始化)。

function person(firstname,lastname,age,eyecolor)
{
    this.firstname=firstname;
    this.lastname=lastname;
    this.age=age;
    this.eyecolor=eyecolor;
    this.changeName=changeName;
    function changeName(name)
    {
        this.lastname=name;
    }
    person.showAge = function(){
        alert("年龄:"+this.age);
    }
}

实例化

var myFather=new person("John","Doe",50,"blue");
var myMother=new person("Sally","Rally",48,"green");

为对象添加属性与方法

这一操作仅仅局限于已经实例化后的对象。

myFather.firstname="John";
myFather.lastname="Doe";
myFather.age=30;
myFather.eyecolor="blue";

为类添加属性与方法

在原型上添加属性和方法

使用类的prototype为其添加方法和属性

Person.prototype.showName = function(){
	alert("姓名:"+this.name);
}
//或者
Person.prototype = {
    showName: function(){alert('我的名字'+this.name)}
}
//或者
Person.prototype = function(){
	showName = function(){alert('我的名字:'+this.name)}
	return { showName: showName}
}()

ES6 Class

4.3 ES6 Class 类 | 菜鸟教程 (runoob.com)open in new window

关于js中function和class的内在关系及区别的理解 - dunaiyang - 博客园 (cnblogs.com)open in new window

js灵魂整理(六):function 与 class - 知乎 (zhihu.com)open in new window

ES6 对象

3.2.3 ES6 对象 | 菜鸟教程 (runoob.com)open in new window

面向对象的特性

  • 继承
  • 多态
  • 封装

JavaScript面向对象核心知识归纳_慕课手记 (imooc.com)open in new window

上次编辑于:
贡献者: XiLaiTL