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的更多相关文章

  1. SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传

    SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...

  2. js笔记-0

    #js笔记-0 数组: indexOf方法: Array也可以通过indexOf()来搜索一个指定的元素的位置: var arr = [10, 20, '30', 'xyz']; arr.indexO ...

  3. 操作系统概念学习笔记 10 CPU调度

    操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU.操作系统能够提高计算机的吞吐率. 对于单处理器系统.每次仅仅同意一个进程执行:不论什么其它进程必须等待,直到C ...

  4. Node.js v0.10.31API手冊-控制台

    Node.js v0.10.31API手冊-文件夹 控制台 Object 用于向 stdout 和 stderr 打印字符.类似于大部分 Web 浏览器提供的 console 对象函数,在这里则是输出 ...

  5. Node.js v0.10.31API手冊-事件

    Node.js v0.10.31API手冊-文件夹 Events(事件) Node里面的很多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStrea ...

  6. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  7. 《C++ Primer Plus》学习笔记10

    <C++ Primer Plus>学习笔记10 <<<<<<<<<<<<<<<<<&l ...

  8. Node.js v0.10.31API手工-DNS

    原版的API品种,这是从以前的翻译和翻译风格不同 Node.js v0.10.31API手冊-文件夹 DNS 使用 require('dns') 引入此模块. dns 模块中的全部方法都使用了 C-A ...

  9. SQL反模式学习笔记10 取整错误

    目标:使用小数取代整数 反模式:使用Float类型 根据IEEE754标识,float类型使用二进制格式编码实数数据. 缺点:(1)舍入的必要性: 并不是所有的十进制中描述的信息都能使用二进制存储,处 ...

随机推荐

  1. Jenkins 基础篇 - 任务分类

    从前面的小节中我们看到在创建 Jenkins 任务的时候有好几种类型,如果你专门安装了 Maven 相关插件,可能还会有一个[构建一个 maven 项目]的任务类型,那这些任务类型究竟有何区别,以及我 ...

  2. [云计算] OpenStack 发展史

    传统数据中心面临的问题 无法管理,资源利用率不高 资源分配不合理 初始成本高 发展阶段 IDC 托管/租用 VPS(虚拟专用主机/OpenVZ/XEN) 虚拟主机 云主机 虚拟化 服务器虚拟化 KVM ...

  3. [笔记] 《我的第一本c++书》

    函数 优秀函数的五个要点 函数的返回值:直接返回和间接返回(指针) 在函数的入口处对参数有效性进行检验:if语句,断言(assert) 如果函数有返回值,不可返回一个指向函数体内局部对象的指针或引用 ...

  4. jmeter线程组扩展空间——Stepping Thread Group

    安装方法跟安装其他插件一样,不复赘述 各个配置含义: 举个例子:一个线程组下包含了登陆和抽奖两个接口 1.继续:如果登陆接口失败,会继续执行抽奖接口 2.start next thread loop: ...

  5. C语言printf-(转自shiney)

    1.调用格式为  printf("<格式化字符串>", <参量表>);   其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另 ...

  6. STM32 KEIL 下的 printf 函数

    1 //加入以下代码,支持printf函数,而不需要选择use MicroLIB 2 #if 1 3 #pragma import(__use_no_semihosting) 4 //标准库需要的支持 ...

  7. Spring 是什么?

    概述 Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好.易于测试.可重用的代码. Spring 框架是一个开源的 Ja ...

  8. 解决无法访问github的问题

    当我们想学习下载某个大神分享的github项目时,由于github域名解析异常,时常会无法访问Github网站. 下面是我总结分享的有效解决方法:思路是自己手动修改hosts文件添加域名解析! 下面教 ...

  9. 快速上手 Linkerd v2 Service Mesh(服务网格)

    在本指南中,我们将引导您了解如何将 Linkerd 安装到您的 Kubernetes 集群中. 然后我们将部署一个示例应用程序来展示 Linkerd 的功能. 安装 Linkerd 很容易.首先,您将 ...

  10. .Net Core Api发布时报502.5 [The Application process failed to Start]问题的解决原因

       碰到这样的错误,在网上找了很久很久.我自己在部署的时候已经把Core 部署需要的环境包在服务器安装好了.还会报这个错,然后在网上找的安装了一个系统补丁包!安装之后还是不行.最后我把服务器重启了一 ...