js笔记10
1.闭包
封装:减少代码的冗余,提高代码的重复利用率
继承:本来需要开辟多个空间,只需要开辟一个空间,减少内存的消耗,提高性能
函数归属:函数归属谁,跟他在哪调用没有关系,而跟他在哪定义有关
闭包的定义:函数在调用的时候,会形成一个私有作用域,内部的变量不能被外部访问,这种保护机制叫闭包(这就意味着函数调用完毕,这个函数形成的栈内存就会被销毁)
栈内存被销毁的案例:
function fn(){
var a=12;
a++;
console.log(a)
}
fn() //13
fn() //13
fn() //13 (因内部存在一个变量,所以在函数内部栈内存就会被销毁)

但有时候,我们不希望他被销毁 ,所以需要return
案例:
function fn(){
var a=12
return function(){
a++;
console.log(a)
}
}
var ss=fn()
ss() //13
ss() //14
ss() //15
解析:

fn()调用完毕后得到的是一个匿名函数,但这个匿名函数在fn()这个作用域下定义的,所以匿名函数内部的变量在fn()作用域下查找,这种写法可以使函数的内部变量不被销毁
构造函数中尽量不要加return,
类的本质也是一个函数,里面也有返回值,但默认object,如果强制return一个值,不会造成影响,如果return一个对象,就会造成影响
2.定义字符串的方法和定义数组的方法
但凡有返回结果的,要对其进行重新赋值
Object(基类)
他下面的子类有:Function(函数) Array(数组) Number(数字) Boolean(布尔) String(字符串) Date(日期) Math(算术) RegExp(正则)
他们的本质都是函数
String类
定义字符串的方法
var st=new String("hello world") 对象定义
var st="hello world" 直接加引号
字符串的+号运算 +仅仅就是拼接
这种方法叫字符串的拼接(基础)
字符串prototype的方法
1)charAt() 返回指定位置的字符
var st="hello world"
var s=st.charAt(2)
2)concat() 连接两个或多个字符串,并返回新的字符串
var st="hello world"
var sd="nihao"
var s=st.concat(sd,"haha")
3) indexOf() (从前往后检索)返回某个字符串,在字符串中首次出现的位置 (如果没有那个字符返回 -1)
var st="hello world"
var sd="lo"
console.log(st.indexOf(sd))
4)lastIndexOf() 从后往前检索,返回某个字符串,在字符中首次出现的位置(如果没有那个字符返回 -1)
和indexOf的写法,功能一样
5)match()
6)search()
7)replace()
8)slice() 提取字符串中的一部分,并返回新的字符串
var st="hello world"
var s=st.slice(2,7) (前闭后开,包含第二个字符,却不包含第七个字符)
console.log(s)
9)split() 将字符串以某种形式分割成数组
var st="hello world hahaha 123 "
var s=st.split(" ")
console.log(s)
10) substr() 从指定位置,向后截取指定数字的字符串,并返回新的字符串
var st="hello world"
var s=st.substr(2,5) 从第三个字符开始(包括第三个字符)向后在数五个字符结束
console.log(s)
11)substring() 跟slice()一样
12)toLowerCase() 将字符串中的字符都变成小写
var st="HeLLo World"
var s=st.toLowerCase(st)
console.log(s)
13)toUpperCase() 将字符串中的字符都变成大写
var st="hello world"
var s=st.toUpperCase(st)
console.log(s)
14) trim() 指除去字符串中两端的空白
var st=" hello world "
var s=st.trim(at)
console.log(s)
Array的方法
数组的定义:var arr=new Array["12","zhangsan"]
var arr=[12,"zhangsan"] (建议大家都用简写的格式)
基本的方法
1)push() 在数组的结尾添加一个新元素 (返回的值为数组的长度)
var arr=["zhangsan","lisi","wangwu"] var arr=["zhangsan","lisi","wangwu"]
arr.push("zhaoliu") var s=arr.push("zhaoliu")
console.log(arr) console.log(s) (重新定义一个变量,返回值为数组的长度)
2)unshift() 在数组中的开始处,填写一个新元素,(返回值是数组长度)
var arr=["zhangsan","lisi","wangwu"] var arr=["zhangsan","lisi","wangwu"]
arr.unshift("suner") var s=arr.unshift("suner")
console.log(arr) (得到想要的数组) console.log(s) (重新定义一个变量,返回值为数组的长度)3) pop() 删除数组中的最后一个元素(并返回删除的元素)
var arr=["zhangsan","lisi","wangwu"] var arr=["zhangsan","lisi","wangwu"]
arr.pop(arr) var s=arr.pop(arr)
console.log(arr) (正常情况下,得到想要的数组) console.log(s) (重新定义一个变量,将得到删除的元素)
4)shift() 删除数组中的第一个元素(返回值为删除的那个元素)
var arr=["zhangsan","lisi","wangwu"] var arr=["zhangsan","lisi","wangwu"]
arr.shift(arr) var s=arr.shift(arr)
console.log(arr) (正常情况下,得到想要的数组) console.log(s) (重新定义一个变量,将得到删除的元素)
5)slice() 选取数组中的一部分,并返回新的数组 (对原数组没有影响)
var arr=["zhangsan","lisi","wangwu","zhaoliu"]
var s=arr.slice(1,3) (前闭后开,包括第二个,不包括第四个)
console.log(s)
6)splice() 在数组中添加或删除元素
var arr=["zhangsan","lisi","wangwu"]
arr.splice(2,1,"zhaoliu") (解析:2:在何处开始,1:向后删几个,("zhaoliu"可选,添加的新元素))
console.log(arr) (得到想要的数组)
var arr=["zhangsan","lisi","wangwu"]
var s=arr.splice(2,1,"zhaoliu")
console.log(s) (得到删除的元素)
7)sort() 给数组中的元素进行排序
var num=[4,12,112,26,35]
num.sort(num)
console.log(num) (得到的结果为112,12,26,35,4) (按每个数字的首字节进行排序,谁小谁在前面)
8)reverse() 反转数组中的元素的顺序
var num=[4,12,112,26,35]
num.sort(num)
console.log(num) (得到的结果为35,26,112,12,4) (从后往前排列)
9)toString() 将数组转换成字符串,并返回成结果
10)concat() 合并多个数组并返回新的值
11)indexOf() 检索数组中的某个元素,并返回他所在的位置,没有这个数组就是-1
js笔记10的更多相关文章
- SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传
SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...
- js笔记-0
#js笔记-0 数组: indexOf方法: Array也可以通过indexOf()来搜索一个指定的元素的位置: var arr = [10, 20, '30', 'xyz']; arr.indexO ...
- 操作系统概念学习笔记 10 CPU调度
操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU.操作系统能够提高计算机的吞吐率. 对于单处理器系统.每次仅仅同意一个进程执行:不论什么其它进程必须等待,直到C ...
- Node.js v0.10.31API手冊-控制台
Node.js v0.10.31API手冊-文件夹 控制台 Object 用于向 stdout 和 stderr 打印字符.类似于大部分 Web 浏览器提供的 console 对象函数,在这里则是输出 ...
- Node.js v0.10.31API手冊-事件
Node.js v0.10.31API手冊-文件夹 Events(事件) Node里面的很多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStrea ...
- thinkphp学习笔记10—看不懂的路由规则
原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...
- 《C++ Primer Plus》学习笔记10
<C++ Primer Plus>学习笔记10 <<<<<<<<<<<<<<<<<&l ...
- Node.js v0.10.31API手工-DNS
原版的API品种,这是从以前的翻译和翻译风格不同 Node.js v0.10.31API手冊-文件夹 DNS 使用 require('dns') 引入此模块. dns 模块中的全部方法都使用了 C-A ...
- SQL反模式学习笔记10 取整错误
目标:使用小数取代整数 反模式:使用Float类型 根据IEEE754标识,float类型使用二进制格式编码实数数据. 缺点:(1)舍入的必要性: 并不是所有的十进制中描述的信息都能使用二进制存储,处 ...
随机推荐
- 为什么说Zoho CRM是最好的销售预测系统?
在文章的开头,我们来讲讲什么是销售预测--销售预测是指利用销售管道中的商机.已完成的配额.有望完成目标的销售团队或个人等关键信息对产品的销售数量与销售金额进行预测的手段.企业在制定销售计划时的重要任务 ...
- Solon Aop 特色开发(1)注入或手动获取配置
常规操作,先启动 Solon public class App{ public void main(String[] args){ Solon.start(App.class, args); } } ...
- stm32开发笔记(三):stm32系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo
前言 stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的. 本章讲解使用GPIO引脚功能驱动LED灯和接收Key按钮输入. STM ...
- [bug] CDH 安装 哈希验证失败
分析 验证 parcel 文件的哈希值 和 sha 文件不一致:文件损坏,重新下载 和 sha 官网一致:配置httpd文件 参考 哈希值和官网不一致 https://blog.csdn.net/lv ...
- javaWeb——jsp
JavaBean 提供一个默认的无参构造函数 需要被序列化并且实现了 Serializable 接口 可能有一系列可读写属性 可能有一系列的 getter 或 setter 方法
- 【CentOS_7】使用tcpdump抓明文包
tcpdump port 12345 -X -X:以十六进制与ASCII方式输出,用于抓取http等明文传输协议 tcpdump功能强大,更多参数可以参考 https://www.cnblogs.c ...
- 强哥JavaScript学习笔记
js文件放header头最后,js代码放body体最后 js语言定位: js是基于对象的语言 php.java是面向对象的语言 定义变量: var str="hello world" ...
- linux进阶之Tomcat服务篇
一.Tomcat简介 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. Tomca ...
- Centos7 vsftpd虚拟用户权限控制(vsftpd虚拟用户限制IP访问)
实验目标:(新增限制虚拟机用户登陆的IP) 实现在同一跟目录下对admin,upload,download三个虚拟用户的不同权限的控制.具体权限控制列表如下: 用户名 权限说明 admin 管理员,可 ...
- 由Chromium内核引起的微信内置浏览器rce漏洞复现
背景 chrome浏览器爆出漏洞,github上公开了poc:https://github.com/r4j0x00/exploits/tree/master/chrome-0day,在关闭chrome ...