闭包 基础    面向对象基础

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. Java Web 项目目录规范

    一.项目结构 这里和其他项目区别不大,我将模板抽离出来,更容易分析和理解: 解释一下:js主要包括extends(引入第三方的js).module(项目模块自己的js).lib(引用包,这里也可以继续 ...

  2. [BZOJ1562][ZJOI2007] 最大半连通子图

    Description Input 第一行包含两个整数N,M,X.N,M分别表示图G的点数与边数,X的意义如上文所述.接下来M行,每行两个正整数a, b,表示一条有向边(a, b).图中的每个点将编号 ...

  3. Hive文件存储格式

    hive文件存储格式 1.textfile textfile为默认格式   存储方式:行存储   磁盘开销大 数据解析开销大   压缩的text文件 hive无法进行合并和拆分 2.sequencef ...

  4. WCF服务编程

    WCF服务编程, 我是WCF的初学者,在这想分享学习WCF服务编程的过程,欢迎大家多多指教!

  5. linux常用命令总结

    du -sh * 当前目录下所有文件占用空间大小,df  空间占用 top 资源使用情况 M 根据驻留内存大小进行排序 tail 1.tail -f filename说明:监视filename文件的尾 ...

  6. github for windows 安装 使用

    遇到无数的未知问题.光是安装就搞了好久. 安装程序显示安装了.NET Framework4.5,然后提示重启.重启后,自动开始下载文件,最多到2%就走不动了. 后来请求了下面这个链接,才开始下载了(虽 ...

  7. IDEA+Tomcat+JRebel热部署1

    所需资源下载: jrebel_6.4.2a  概述 JRebel是一个J2EE热部署的工具.使用它可以减少浪费8-18%的开发时间在项目的构建和部署上.之前只是听说过,一直没有实践,今天实际使用了一把 ...

  8. MongoDB常用命令

    本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell.pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程. MongoDB的使用之前也分享过一篇, ...

  9. tcpdum使用

    安装tcpdump包:yum install -y tcpdump ,不加”-i eth0”是表示抓取所有的接口包括lo. 1.抓取包含10.88.88.96的数据包 # tcpdump -i eth ...

  10. PHP防止跨域提交表单

    在提交的服务段的数据进行验证.   $servername=$_SERVER['SERVER_NAME'];//当前运行脚本所在服务器主机的名字.  $sub_from=$_SERVER[" ...