码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象

时间:2016-09-24 10:37:51      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

01 基础理论
//面向对象和面向过程
  //1 面向对象是一种编程思想,很多语言都是面向对象的,比如Java js c++ OC等
  //2 所有的面向对象的语言有三大特性 1封装 2 继承 3 多态
  //3 在面向对象的思想里有一种非常重要的理论是“万物皆对象”
  //4 面向对象中有“类和对象”的概念
   //类:具有相同特征和行为的事物的 抽象
   //对象(实例):类的具体化
   //特征——>属性 行为——>方法 
  //5 js中的数据类型分为两大类
   //5.1 原始类型 number Boolean string 空类型 未定义类型(原始类型就是存储一些简单的数据)
   //5.2 引用类型:Array Date Function Error Reg Object等
   //其中object是一个什么都没有的空类
 
//原料+加工+出厂 称为工厂方法
  //createPerson()称之为构造函数
 
//当获取某对象的属性的值的时候??,系统首先判断该对象是否有这个属性 如果有 就返回  
   //如果没有 就去构造函数的原型中去找是否含有该属性 如果还没有 就去Object的构造函数的原型中去找
    //如果都没有 就返回undefined
  //上述查找属性值的过程称之为‘原型链
 
重点部分
1 常用的布局方式
   2 动画处理方式
   3 多线程
   4 第三方框架的使用
   5 js中捕获和冒泡
   6 原型链
 
02 继承+tab切换+闭包
<!--将已有代码改成面向对象的写法需要满足
  1 所有代码在onload内部
  //改写的技巧
  2 onload相当于面向对象中的构造函数 都是进行初始化操作
  3 变量相当于对象的属性
  4 函数相当于对象的方法
  5 注意:不允许出现函数嵌套函数
  
  总结:面向对象中的80%的坑都来自于this!!!!
 -->
 <!--原生js和面向对象的区别
  1 前者思考成本低 速度快
    后者可利于维护,思考成本高
  2 前者使用不便 后者使用极为方便
  注意:tab切换面向对象的写法 要求 会手写!!!
继承
  call()
eg:
    //子类
  function Worker(name,sex,job){
   //构造函数伪装—>在子类中调用父类的属性赋值
   //call:调用父类的构造函数 //call里的this指的是new出来的worker对象
   //继承第一步:通过call方法实现继承父类属性
   Person.call(this,name,sex);  
   this.job=job;
  }
//直接交换原型:会把原型包含的所有属性全都自动赋值
  
  //继承第二步:通过给原型直接赋值
  Worker.prototype=Person.prototype;
 
json
//原型中的属性是类共有的(相当于className中的初始化设置)
  Cat.prototype.type="猫科动物";
闭包
  //闭包是什么? 外部函数嵌套内部函数 并把内部函数返回
  //闭包的特点? 1 内部函数可以使用外部函数的形参和变量 2 变量会永久存在在内存中 不会被系统回收
  //闭包的应用(好处) 1 避免全局变量被污染  2 可以获取下标(两种写法,了解)
 
//垃圾回收机制
  //当函数执行完毕,系统会自动回收函数和其内部局部变量所占的内存。当        再次调用函数时,重新申请内存
  
  //闭包 函数嵌套时,在内部函数中可以使用外部函数的变量或者形参
    //闭包中的变量在内存中永久存在

 

匿名函数自调用 
 //下面这种写法,函数会自动调用一次 
 //       ( function(){} )  (); 
  (function(){ 
   alert(111); 
  })(); 
  //传形参的写法 
  (function(i){ 
   alert(i); 
  })(2); 
两个li点击事件 点击输出当前下标  用匿名函数+闭包 
//写法一: 
  //外部函数是匿名函数自调用 
  //内部函数是onclick事件对应的函数 
  //在内部函数中使用了外部函数的形参i 
  /*for (var i=0;i<lis.length;i++) { 
   (function(a){ 
    lis[a].onclick=function(){ 
     alert(a); 
    } 
   })(i) 
  }*/ 
  //写法二: 
  for (var i=0;i<lis.length;i++) { 
   lis[i].onclick=(function(i){ 
    return function(){ 
     alert(i); 
    }   
   })(i); 
  } 
//需要掌握的 
  function aaa(){ 
   var a=10; 
   return function(){ 
    a++; 
    alert(a); 
   } 
  } 
  var c=aaa(); 
  c();//11 
  c();//12

 

面向对象

标签:

原文地址:http://www.cnblogs.com/simba-lkj/p/5902479.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!