闭包 基础    面向对象基础

1.1 闭包

在程序语言中,所谓闭包,是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域上的非持久型变量值能力的段落。这些外部执行域的非持久型变量神奇地保留他们在闭包最初定义(或创建)时的值。

白话:  我们可以用一个函数 去访问 另外一个函数的内部变量的方式就是闭包。

内部变量 是 局部变量      那我们知道,局部变量是不可以为别人随便使用也。

function fun() {
    var num = 10;
}
console.log(num);  // 这样子就错了  num 是一个局部变量

测试题

1 function outerFun()

2 {

3  var a=0;

4  function innerFun()

5  {

6   a++;

7   alert(a);

8  }

9  return innerFun;  //注意这里

10 }

11 var obj=outerFun();

12 obj();  obj();

13 var obj2=outerFun();

14 obj2();  obj2();

15 结果是 :  1  2  1  2

闭包的优点 :

优点:不产生全局变量,实现属性私有化。

缺点:闭包中的数据会常驻内存,在不用的时候要删掉否则会导致内存溢出。

1.2 对象(object)

对象是什么?

基本数据类型    string   number  boolean   null   undefined

Array    对象

对象数据类型:   对象就是带有属性和方法的 数据类型

var num = 10;   // 变量
var arr = [];  // 数组
arr.index = 10;  // 数组arr 的 一个 index  属性

但是有个问题, 我们想要某些属性或者方法的时候,用数组不合适。

arr.lenght  .

我们想要自己id属性和方法 。  要求这个一定是个对象才行。

1.2.1 声明对象

我们有两种声明对象的方式.

var obj = new Object();

但是我们更提倡用第二种方法: 字面量式声明对象

var obj  = {};

1.2.2 使用对象

1.2.3 面向对象

面向对象里面:类和对象

类是对象的抽象,而对象是类的具体实例

一切事物皆对象  JavaScript 一切皆对象

类 和 对象

对象   女朋友

小胡 你有对象了吗?              泛指     女朋友

旁边坐的那个女生是你对象吗?     特指     某一个女朋友

大家喜欢吃苹果吗?         泛指        类

你手里的那个苹果甜吗?     特指        对象  (具体的实例)

面向对象的特性

1. 抽象

抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。

2. 封装

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面

3. 继承

4. 多态

多态是指两个或多个属于不同类的对象,对于同一个消息(方法调用)作出不同响应的方式

1.2.4 new  

新的   我们经常利用new 关键字 去声明新的对象

javascript

new运算符的作用是创建一个对象实例。这个对象可以是用户自定义的,也可以是带构造函数的一些系统自带的对象。

new 关键字可以让 this  指向新的对象

所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。

1.2.5 prototype

共同的 相同的 部分

主要解决:函数因为使用非常非常多,重复执行效率太低。

类.prototype.方法  = function() {}  具体格式

可以把那些不变的属性和方法,直接定义在prototype对象上

使用方法:

类名.prototype.方法

JS原生基础终结篇 (帅哥)的更多相关文章

  1. 15、js 原生基础总结

    Day1 一.什么是JS?   ==基于对象==和==事件驱动==的客户端脚本语言 二.哪一年?哪个公司?谁?第一个名字是什么? 1995,NetScape(网景公司),布兰登(Brendan Eic ...

  2. JS原生第三篇 (帅哥)

    1.1 数 组 1. 数组           看电影    电影院  座位 大的变量     里面可以放很多的值 var  arr = [1,3,57]; var ar = new Array(); ...

  3. JS原生第八篇 (帅哥)

    1.1 复习     1. clientX          clientWidth   可视区域的宽度 clientWidth     width  +  padding offsetWidth   ...

  4. JS原生第七篇 (帅哥)

    1.1 复习 offset   自己的 偏移 offsetWidth    得到自己的宽度 offsetHeight 构成 :   width  +   padding  +  border div ...

  5. JS原生第六篇 (帅哥)

    复习 按钮不可用    disabled =  "disabled"  ||  true setTimeout   只执行一次    setInterval  执行很多次 递归调用 ...

  6. JS原生第五篇 (帅哥)

    1.1 节点 1. 节点        网页是有很多的节点组成的  . 元素节点   指的是 :  标签     li  span 文本节点      属性节点 父子兄弟    父    parent ...

  7. JS原生第四篇 (帅哥)

      1.1  1. 循环 for(初始化; 退出条件; 增量)  {  } while(退出条件) {     } do {  语句 }  while(退出条件) 2. switch( )   多选1 ...

  8. arcgis api 4.x for js之基础地图篇

    arcgis api3.x for js转向arcgis api4.x,我也是最近的3-4个月时间的事情,刚好公司有个webgis项目需要展示三维场景,项目选择arcgis api4.x.我纯碎记录一 ...

  9. JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)

    前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能 ...

随机推荐

  1. csv

    csv 文件的读写:http://www.cnblogs.com/fiozhao/p/3225112.html 求取一个立方体的对角线穿个的边长为1的正方体的个数:http://www.cnblogs ...

  2. bzoj 3507: [Cqoi2014]通配符匹配

    Description 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个是星号(“”’),可以匹配0个及以上的任意字符:另一个是问号(“?”),可 ...

  3. C到C++的升级

    const 在C中只是个“只读变量”,并不是真正意义上的常量,通过指针能改变它,如下 #include<stdio.h> int main() { ;//声明只读变量a为0 int* p= ...

  4. bootstrap之强调文本的类(带颜色)

    bootstrap之强调文本的类(带颜色) <small>本行内容是在标签内</small><br> <strong>本行内容是在标签内</str ...

  5. css多行显示省略号

    首先说css多行显示省略号和单行文本省略号: 我们知道,单行显示省略号时,我们首先需要设置容器的宽度width:value(具体的值),然后强制文本在一行内显示,即white-spacing:nowr ...

  6. centos 6.5 升级内核 linux 3.12.17 (笔记 实测)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Linux centos 2.6.32-431.el6.x86_64(Centos-6.5-x86_64-mi ...

  7. 在线图片压缩后以ImageIO 流的形式 设置大小显示指定页面

    1.Servlet   代码 public class ZoomImgServlet extends HttpServlet implements Servlet { public void init ...

  8. 嵌入式linux下如何尽快播放开机音乐

    今天在考虑如何尽快启动一个应用程序,播个开机音乐什么的. 最开始的启动流程是这样的,bootloader 启动kernel,kernel跑完挂载文件系统, 然后会执行/init,而这个init 是指向 ...

  9. SQL多表合并查询结果

    两表合并查询,并同时展示及分页SELECT a.* FROM ( ( SELECT punycode, `domain`, 'Success' AS state, add_time, AS refun ...

  10. 谢欣伦 - OpenDev原创例程 - 串口助手Comm Assist

    前一段时间,一位博友发邮件给我.他跟我讲说没太看懂<化繁为简系列原创教程 - 通信专题 - 串口类CxComm的使用>,请我做一个DEMO工程给他.我抽了一天时间编写并上传了一个DEMO工 ...