1.面向对象和面向过程

C语言(面向过程的语言)在庞大的项目中,没办法很好的维护和扩展
C++语言(面向对象语言) 为了应对大型项目,似的项目可扩展和可维护性更好

2.面向对象的基本概念

类和实例

类: 具有某种共同特性的特点的抽象概念
Object、Array、String、Date、RegExp、XMLHttpRequest
实例:对应某个类的一个具体的存在

封装(英文单词的词根时胶囊)
  1. 隐藏了实现的细节
  2. 保护内部数据不被破坏
    继承
    不劳而获.子类继承了父类的所有属性和方法
    在其他语言中,继承父类的共有和保护的属性和方法,私有的继承不了
    多态:
    同一个变量,当这个变量指向不同类的实例时,同一个动作体现出了不同的形态
    1. var animal = newCat();
    2. animal.eat(); //猫的吃方法
    3. animal = newDog();
    4. animal.eat(); //狗的吃方法

3.JS中的对象

  1. //创建对象:
  2. var person = newObject();
  3. var person1 = {};
  4. //为对象添加属性
  5. person.name = 'xiaoMing';
  6. person1['name'] = 'xiaoAn';
  7. //修改属性
  8. person.name = 'xiaoHong';
  9. //获取
  10. alert(person.name)
  11. //删除属性
  12. delete person1.name
  13. alert(person1.name)
  14. //遍历:for-in
  15. for(var property in person) {
  16. console.log("property=",property)
  17. console.log("person[property]=",person[property])
  18. }

this

在全局作用域,this就是window

  1. alert(this === window); //true

通常情况下,this使用在函数中的
默认情况下,当函数时被某个对象调用的,(例如:xxx.func()),此时,func函数中的this指向xxx。否则,(例如:func()),此时,func函数中的this,指向window
注意:

  1. 函数在定义时,无法决定this的指向
  2. 每个函数都有自己的this,一旦进入了新函数,this就可能会变化
  3. setTimeout和setInterval里的this指向window