JS原生基础终结篇 (帅哥)
闭包 基础 面向对象基础
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原生基础终结篇 (帅哥)的更多相关文章
- 15、js 原生基础总结
Day1 一.什么是JS? ==基于对象==和==事件驱动==的客户端脚本语言 二.哪一年?哪个公司?谁?第一个名字是什么? 1995,NetScape(网景公司),布兰登(Brendan Eic ...
- JS原生第三篇 (帅哥)
1.1 数 组 1. 数组 看电影 电影院 座位 大的变量 里面可以放很多的值 var arr = [1,3,57]; var ar = new Array(); ...
- JS原生第八篇 (帅哥)
1.1 复习 1. clientX clientWidth 可视区域的宽度 clientWidth width + padding offsetWidth ...
- JS原生第七篇 (帅哥)
1.1 复习 offset 自己的 偏移 offsetWidth 得到自己的宽度 offsetHeight 构成 : width + padding + border div ...
- JS原生第六篇 (帅哥)
复习 按钮不可用 disabled = "disabled" || true setTimeout 只执行一次 setInterval 执行很多次 递归调用 ...
- JS原生第五篇 (帅哥)
1.1 节点 1. 节点 网页是有很多的节点组成的 . 元素节点 指的是 : 标签 li span 文本节点 属性节点 父子兄弟 父 parent ...
- JS原生第四篇 (帅哥)
1.1 1. 循环 for(初始化; 退出条件; 增量) { } while(退出条件) { } do { 语句 } while(退出条件) 2. switch( ) 多选1 ...
- arcgis api 4.x for js之基础地图篇
arcgis api3.x for js转向arcgis api4.x,我也是最近的3-4个月时间的事情,刚好公司有个webgis项目需要展示三维场景,项目选择arcgis api4.x.我纯碎记录一 ...
- JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)
前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能 ...
随机推荐
- 二分图&网络流&最小割等问题的总结
二分图基础: 最大匹配:匈牙利算法 最小点覆盖=最大匹配 最小边覆盖=总节点数-最大匹配 最大独立集=点数-最大匹配 网络流: 技巧: 1.拆点为边,即一个点有限制,可将其转化为边 BZOJ1066, ...
- MYSQL的安装
1.将mysql的安装文件放入虚拟机 2.搭建yum库 3.依次安装mysql的5个文件 最后一个server需要的依赖太多,所以用yum进行安装. 6.进行mysql的重置 mysql_instal ...
- JS写入日志
try { var WSShell = WScript.CreateObject("WScript.Shell"); var FileSys = WScript.CreateObj ...
- MFC覆盖OnPrepareDC实现“所见即所得”打印
附件下载:http://files.cnblogs.com/mengdejun/print.zip void CPrintView::OnPrepareDC(CDC* pDC, CPrintInfo* ...
- Jenkins 集成打包和上传 App Store 的冲突
周一下午用 Jenkins 集成打包,遇到了一个很奇怪的问题,之前上传到 APP Store 的时候 Build Settings->“Code Signing Resource Rules P ...
- 信号量sem
一.什么是信号量 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域.临界区域是指执行数据更 ...
- webform 光棒效果,删除操作弹出确定取消窗口
鼠标移入onmouseover和鼠标移出onmouseout,代码里没大写我这也就不大写了.那首先,我们得获取Class为tr_item里的所有东西,也就是项标签里的数据.然后呢,我们定义一个oldC ...
- HDU3465 树状数组逆序数
Life is a Line Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)T ...
- redis 操作
redis 1 启动服务 redis-2.8.20 wangchengcheng$ pwd /Users/wangchengcheng/Documents/GameJelly/server/redis ...
- USACO翻译:USACO 2014 FEB SILVER 三题
USACO 2014 FEB SILVER 一.题目概览 中文题目名称 自动打字 路障 神秘代码 英文题目名称 auto rblock scode 可执行文件名 auto rblock scode 输 ...