面向对象
大约 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)
关于js中function和class的内在关系及区别的理解 - dunaiyang - 博客园 (cnblogs.com)
js灵魂整理(六):function 与 class - 知乎 (zhihu.com)
ES6 对象
3.2.3 ES6 对象 | 菜鸟教程 (runoob.com)
面向对象的特性
- 继承
- 多态
- 封装