1.面向对象和面向过程
C语言(面向过程的语言)在庞大的项目中,没办法很好的维护和扩展
C++语言(面向对象语言) 为了应对大型项目,似的项目可扩展和可维护性更好
2.面向对象的基本概念
类和实例
类: 具有某种共同特性的特点的抽象概念
Object、Array、String、Date、RegExp、XMLHttpRequest
实例:对应某个类的一个具体的存在
封装(英文单词的词根时胶囊)
- 隐藏了实现的细节
- 保护内部数据不被破坏
继承
不劳而获.子类继承了父类的所有属性和方法
在其他语言中,继承父类的共有和保护的属性和方法,私有的继承不了多态:
同一个变量,当这个变量指向不同类的实例时,同一个动作体现出了不同的形态var animal = newCat();
animal.eat(); //猫的吃方法
animal = newDog();
animal.eat(); //狗的吃方法
3.JS中的对象
//创建对象:
var person = newObject();
var person1 = {};
//为对象添加属性
person.name = 'xiaoMing';
person1['name'] = 'xiaoAn';
//修改属性
person.name = 'xiaoHong';
//获取
alert(person.name)
//删除属性
delete person1.name
alert(person1.name)
//遍历:for-in
for(var property in person) {
console.log("property=",property)
console.log("person[property]=",person[property])
}
this
在全局作用域,this就是window
alert(this === window); //true
通常情况下,this使用在函数中的
默认情况下,当函数时被某个对象调用的,(例如:xxx.func()),此时,func函数中的this指向xxx。否则,(例如:func()),此时,func函数中的this,指向window
注意:
- 函数在定义时,无法决定this的指向
- 每个函数都有自己的this,一旦进入了新函数,this就可能会变化
- setTimeout和setInterval里的this指向window