Skip to content
1StepEngineer edited this page Aug 30, 2018 · 28 revisions

面向对象(oop)

var arr = new Array() //[]  这些个是系统自带的对象,就叫系统对象
var date = new Date()

//自定义对象
var tab = new Tab()

面向对象编程(oop)的特点

  • 封装:只能通过对象来访问方法
  • 继承:从已有对象上继承新的对象
  • 多态:用的不多,不像java/php,多对象的不同形态

对象的组成

  • 方法(行为、操作)——函数:过程、动态的
  • 属性——变量:状态、静态的

工厂模式

封装函数

function createPerson(name){
  var obj = new Object()
  obj.name = name
  obj.showName = function(){
     alert(this.name)
 }
  return obj
}
createPerson('小明').showName()
createPerson('小强').showName()

工厂模式虽然解决了创建多个类似的对象,并没有解决对象识别的问题。因此引出构造函数模式

构造函数模式

当new去调用函数,函数中的this就是创建出来的对象,并且函数返回值(隐式返回)就是this的这个对象。这个是规则。

function CreatePerson(name){
   this.name = name 
   this.showName = function(){
     alert(this.name)
 }
}
new CreatePerson('小明').showName()
var p1 = CreatePerson('x')
var p2 = CreatePerson('y')
p1.showName == p2.showName //false
/* 这个false代表:
* p1和p2定义的showName用的是两个地址,会占用多次内存。如果每次都构建,就会极大消耗内存
* 解决上述问题,引入下面原型模式
*/

Clone this wiki locally