面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。它使用先前建立的范例,包括模块化,多态和封装几种技术。相对于“一个程序只是一些函数的集合,或简单的计算机指令列表。”的传统软件设计观念而言,面向对象编程可以看作是使用一系列对象相互协作的软件设计。 在 OOP 中,每个对象能够接收消息,处理数据和发送消息给其他对象。每个对象都可以被看作是一个拥有清晰角色或责任的独立小机器。
类
JavaScript可用方法作类。定义一个类跟定义一个函数一样简单。在下面的例子中,我们定义了一个新类Person。
// 创建类Person
function Person(){
对象
通过 new 可以创建对应类的对象
// 创建类Person
function Person(){
}
var pe = new Person();
通过typeof 我们可以得到创建出来的是一个object 类型
// 创建类Person
function Person(){
}
var pe = new Person();
console.log(typeof pe);
属性
可以未类添加属性来方便传入数据,将其用this来保存可以在类内进行使用。
// 创建类Person
function Person(data ){
this.data = data;
console.log(this.data);
}
// 创建对象
var pe = new Person( "Data" );
方法
通过prototype 可以创建类的方法。让每一个方法实现自己特定的功能切不会影响其他 的方法是我们的目的
// 创建类Person
function Person(data ){
this.data = data;
console.log(this.data);
}
Person.prototype.method = function(){
console.log("这是一种创建方法的方式");
}
// 创建对象
var pe = new Person( "Data" );
//调用方法
pe.method();
// 创建类Person
function Person(data ){
this.data = data;
console.log(this.data);
}
Person.prototype = {
method : function(){
console.log("这是批量创建的方法")
},//使用逗号分隔
method2 : function(){
console.log("这是批量创建的第二个方法")
}
}
// 创建对象
var pe = new Person( "Data" );
//调用方法
pe.method();
pe.method2();
关于this指向
this永远指向函数的最终调用者
① this指向的,永远只可能是对象
②this指向谁,永远不取决于this写在哪,而是取决于函数在哪调用。
③ this指向的对象,我们称之为函数的上下文context,也叫函数的调用者
当然我很可以直接输出this来判断this的指向
// 创建类Person
function Person(data ){
this.data = data;
console.log(this.data);
}
Person.prototype = {
method : function(){
console.log(this)
},//使用逗号分隔
method2 : function(){
console.log(this)
}
}
// 创建对象
var pe = new Person( "Data" );
//调用方法
pe.method();
pe.method2();