闭包 基础    面向对象基础

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. 疑难问题解决备忘录(2)——ubuntu12.04分配swap

    分配swapdd if=/dev/zero of=Swap.disk bs=1M count=6k (count=1k创建1G的Swap,如果要创建6G则count=6k:这步比较慢) 创建swap文 ...

  2. JavaScript中严格模式"use strict";需注意的几个雷区:

    1.with语句会抛错误 2.未声明的变量被赋值会报错 3.arguments在严格模式下变为静态,传入的参数与arguments无关系 4.delete会报错 5.对象的重复属性名会报错 6.禁止八 ...

  3. 本地xdebug调试搭建 Laravel+homestead+phpstorm

    1.在homestead virtual box安装和配置xdebug 先在终端运行vagrant up 和 vagrant ssh,ssh远程到homestead,然后复制以下代码到一个shell文 ...

  4. 配置gradle.properties

    在一些项目中会分拆app 和 lib , 这时候引用support的时候,一旦更改版本会出现需要同步更改两个地方的问题.这种情况,可以通过配置gradle.properties实现替换. 在项目编译过 ...

  5. linux菜鸟日记

    本地yum源的安装: 要安装本地yum源,首先需要熟悉本地yum文件的配置和光盘的挂载 第一步挂载光盘: 首先需要指定一个光盘挂载目录 通常情况下我习惯使用默认挂载目录,所以一般我使用的光盘挂载命令是 ...

  6. ubuntu server 搭建自己的个人博客及其他网站

    一, 安装apache2服务器 sudo apt-get install apache2 二,安装mysql服务器 sudo apt-get install mysql-server 此时会提示输入M ...

  7. BIT 树状数组 详解 及 例题

    (一)树状数组的概念 如果给定一个数组,要你求里面所有数的和,一般都会想到累加.但是当那个数组很大的时候,累加就显得太耗时了,时间复杂度为O(n),并且采用累加的方法还有一个局限,那就是,当修改掉数组 ...

  8. 15分钟学会Lua

    lua的很多语法跟matlab很像 最基本的赋值是一样的 循环和选择判断后面必须跟一个关键字:do和then ,, do ... end if - then - end table是lua的唯一一种数 ...

  9. iOS开发查看手机app本地存储的文件

    开发过程中,有时会在本地存储一些文件,但是我们不确定有没有存上,可以通过以下方法来查看测试手机上本地存储的文件: 1.选择xcode上面的window下面的Devices 2.先在左边选中你当前的设备 ...

  10. Python之路第一课Day9--随堂笔记之二(进程、线程、协程篇)

    本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queu ...