1.面向对象概念
1)什么是面向对象: oop 是一种编程的思想, 体现的是生活逻辑
2) 面向对象和面向过程:
面向过程:
1:大量的全局变量
2:命名冲突
3:顺序执行(一步一步一步........)
面向对象三大特性:封装 继承 多态(js没有多态的)
js: 封装抽象继承(借)
3) 写js面向对象代码特点:
高内聚(在一个功能模块里面所有的代码必须紧密相邻)
低耦合(模块和模块之间尽量 少 关联)
2.构造函数
构造函数- > new 对象(实例化对象) -> 存储数据。
注:构造函数(为了区分普通函数和构造函数 构造函数的首字母大写)
构造函数 -> 去实例化对象.
eg:写一个对象去描述一个人
var person = new Object();
person.name = 'wangshuai';
person.age = '20';
person.show = function(){
return '好帅'
}
var person = new Object();
person.name = 'wangshuai';
person.age = '20';
person.show = function(){
return '好帅'
}
去描述100个人(复制?????) 封装起来
function person(name,age){
var obj = new Object(); //工厂
obj.name = name; //加工
obj.age = age;
obj.show = function(){
return obj.name;
}
return obj; //出厂
}
var person1 = person('wangshuai','20');
var person2 = person('xiaom','10');
var person3 = person('ee','30');
上述代码分析:
在创建每一个人的时候(调用person),在函数内部每次都会new 一个对象
在构造函数里面 实例化对象的时候。 自动return 出一个this 指向当前这个对象。
3:普通函数 和构造函数的差别:
例:
function person(){
return this;
}
return this;
}
var p1 = new person(); //实例化对象 person构造函数。
console.log(p1)
console.log(p1)
普通函数如果函数内部没有return的时候,返回的是一个undefined.
构造函数如果内部没有return的时候,再实例化的对象的时候(new 对象),自动return出 this 指向当前构造出来的这个对象
构造函数如果内部没有return的时候,再实例化的对象的时候(new 对象),自动return出 this 指向当前构造出来的这个对象
4. prototype
原型对象:
记录了一个函数公共的属性和方法。
可以拓展属性和方法
节约内存提升性能
继承属性和方法
原型对象:
记录了一个函数公共的属性和方法。
可以拓展属性和方法
节约内存提升性能
继承属性和方法
例: function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.show = function(){
this.name;
}
var p1 = new Person('ws',10);
var p2 = new Person('dd',20);
console.log(p1.show == p2.show)
this.name = name;
this.age = age;
}
Person.prototype.show = function(){
this.name;
}
var p1 = new Person('ws',10);
var p2 = new Person('dd',20);
console.log(p1.show == p2.show)