对象:黑盒子,不知道内部构造,但会使用表面的功能
面向对象的特点
- 抽象:抽出我们关心的特点
- 封装:黑盒子,不知道内部构造,但会使用表面的功能
- 继承:继承父类所有特点,又有自己的特点
1. 多重继承
2. 多态
变量/属性 函数/方法
- 变量的自由的,属性是有主的(对象的)
- 函数是自由的,方法是有主的(对象的)
this:当前的方法属于谁(当前发生事件的对象)
工厂模式的缺点(构造函数)
- 没有new
- 同样的方法没有共享,导致占用内存,showName是同样的方法,不需要重复初始化
function createPerson(name){
//原料
var p = new Object();
//加工
p.name = name;
p.showName = function(){
return this.name;
}
//出厂
return obj;
}
改1
解决new 但是方法还是没有共享
// 类名首字母大写
function CreatePerson2(name){
//系统偷偷为我们创建
//var this = new Object();
this.name = name;
this.showName = function(){
return this.name;
}
//系统偷偷为我们出厂
//return this;
}
var jack = new createPerson2("jack");
var dav = new createPerson2("dav");
alert(jack.showName == dav.showName); // false
类和对象
类: 模子 Array
对象:产品(成品) arr
原型 prototype
css中的class:一次给一组元素加上样式 --->js的原型
行间样式: 一次给一个元素加上样式 --->js给对象加东西
改2 混合方式
- 构造函数加属性
- 原型加方法
- 类名首字母大写
function CreatePerson3(name){
this.name = name;
}
//为类加一个共通方法 实现方法的共享
CreatePerson3.prototype.showName = function(){
return this.name;
}
var jack = new CreatePerson3("jack");
var dav = new CreatePerson3("dav");
alert(jack.showName == dav.showName); // true