标签:nbsp amp window下 方式 不能 类对象 hash false 内存
1. 面向对象:在程序中都是用一个对象来描述现实中一个具体的东西。
          现实中的一个东西都包含属性和功能:
             属性:描述一个东西特点的变量,一个值
             功能:东西可以执行的操作
      什么是对象:封装多个数据和方法的存储空间
      什么是自定义对象:封装现实中一个东西的属性和功能的存储空间。
	现实中东西的属性会成为对象中的属性变量。
	现实中东西的功能,会成为对象中的方法(函数)
面向对象和面向过程的区别:
面向对象是将事物高度抽象化。
面向过程是一种自顶向下的编程
面向对象必须先建立抽象模型,之后直接使用模型就行了。
“面向过程”是一种是事件为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用。
”面向对象“是以“对象”为中心的编程思想。
   2. 创建自定义对象:3种方式:
      1. var obj={‘属性名1‘:值1,
                  ‘属性名2‘:值2,
                  ‘功能名1‘:function(){...}
                 };
    js中一切都是对象!所有对象的底层都是hash数组
      属性:如何访问属性:2种:obj.属性名  obj["属性名"]
      访问对象中不存在的属性
      (访问数组中不存在的下标): 不会出错,返回undefined
      强行给不存在属性赋值,不报错!js会自动创建同名属性
      如何判断某个对象是否包含指定成员:3种
      1. obj.hasOwnProperty("成员名") 
      2. "属性名" in 对象
	如果找到,返回true,否则返回false!
      3. 直接使用obj.属性名作为条件: 
	 arr.indexOf!==undefined      
        如果不包含,返回undefind-->false
        如果包含,返回值或function-->true
        何时省略:判断方法是否存在时,可省略!==
                  如果确定属性值一定不是null,0,"",NaN
                  也可省略
      方法:如何在方法中,访问当前对象自己:
        ****this关键字:运行时,指代正在*调用*方法的对象
                                 (.前的对象)
         this本质是window下唯一的一个指针,指向当前正在调用方法的对象
 如何在方法内,访问当前对象自己的属性:this.属性名
    ***在方法内访问当前对象自己的属性,必须用this.属性名
         
   ***this和定义在哪儿无关!仅和调用时使用的当前对象有关
   ***如果无主的调用或赋值,默认this都是window!
1. ***面向对象:继承
   面向对象三大特点:封装  继承  多态
     封装:将描述同一个东西的属性和方法,定义在一个对象中
     继承:父对象中的属性和方法,子对象可直接使用
     多态:同一个对象,在不同情况下,呈现不同的状态
          重载:同一方法名,传入参数不同,执行不同的操作
          重写:子对象觉得父对象的成员不好用,可自己定义一个,覆盖父对象的成员
   创建对象:3种:
   1. 对象直接量
      var obj={"属性名":值,
		...:...,
               "方法名":function(){ ...this.属性名... }
               }
   2. var obj=new Object(); //创建一个空对象
      obj.属性名=值;
      obj.方法名=function(){...this.属性名...}
   3. 利用构造函数*反复*创建*相同结构*的对象:
      构造函数:描述一类对象结构的特殊函数
      2步:
      1. 定义构造函数
	function 构造函数名|类型名(属性参数1,.....){
             this.属性名=属性参数1;
             //在当前正在创建的对象中添加一个属性名
	     //赋值为属性参数1的值
             ...
             this.方法名=function(){
                  ...this.属性名...
             }
        }
      2. 利用构造函数创建对象:
        var obj=new 构造函数名|类型名(属性值1,...);
        new: 1. 创建一个空对象:new obj={    };
             2. 用空对象,调用构造函数
		  构造函数在空对象中添加属性和方法
             3. 设置新对象的__proto__指向构造函数的prototype对象
             4. 返回新对象的地址。
   继承:js中一切继承都是用原型对象实现的!
      原型对象:每个函数对象都有一个原型对象
    构造函数的原型对象负责保存所有子对象共享的成员!
      建议:所有子对象共享的方法,都应定义在构造函数的原型对象中。——避免重复定义方法对象,浪费内存。
     说明:其实所有内置类型的API都是定义在类型.prototype
   扩展对象属性:2种扩展:
    1. 扩展共有属性:通过构造函数.prototype添加的属性
    2. 扩展自有属性:通过某一个具体子对象添加的属性
   判断自有属性或共有属性:
    1. 判断自有属性:obj.hasOwnProperty("属性名")
    2. 判断共有属性:
"属性名" in obj && !obj.hasOwnProperty("属性名")
在原型关系中包含 且  子对象自己*没有*
   删除属性:delete 对象.属性名
       *仅能删除当前对象自己的属性,无法删除共有属性
   全局变量:3种:
   var n=1; |   window.n=1;   |    window["n"]=1
   不能delete    不能delete        可被delete
    
   原型链:由各级对象的__proto__逐级继承形成的关系
   获得任意对象的父级原型对象:
	Object.getPrototypeOf(子对象)
        ==>子对象.__proto__
检查对象的父对象:父对象.isPrototypeOf(子对象)
标签:nbsp amp window下 方式 不能 类对象 hash false 内存
原文地址:http://www.cnblogs.com/handsomeboyyyyyy/p/6766818.html