类 Class
泛指一类事物
对象 Object
某一个具体的东西
对象由什么组成?
属性
属性是属于某个对象的。
方法
方法是属于某个对象的。
创建一个类
构造函数
因为是创建对象的
两个问题:
1.没有new
2.同一个类的方法,不相等
加new
1.开头加new Object();
2.结尾加return this;
方法给构造的原型加
构造函数的原型 类名.prototype
属性给构造的this加
Person类
function Person(name){
this.name = name;
}
Person.prototype.showName = function(){
return this.name;
};
this是什么?
不看定义,只看调用
方法是谁的,this就是谁
优先级
高
new Object
定时器 window
方法、事件 对象本身
正常调用 window\undefind
低
只管一层、只看最后一次调用
只看最后一次调用
面向对象三大特性
1)封装
2)继承 (属性和方法)
Person 人类
属性
name age gender
方法
showName() showAge() showGender()
Worker 工人类
属性
name age gender job
方法
showName() showAge() showGender() showJob()
矫正this指向
fn.call(this指向谁,arg1,arg2....);
或者
fn.apply(this指向谁,[arg1,arg2,arg3...]);
属性继承
function 子类(a,b){
父类.call(this,a,b);
或者
父类.apply(this,arguments);
}
方法继承
子类.prototype = new 父类();
子类.prototype.constructor = 子类;
3)多态