zoukankan      html  css  js  c++  java
  • javascript高级编程笔记04(基本概念)

    Function类型

    Es5中规范了另一个函数对象的属性:caller,这个属性中保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,这它的值为null

    function outer(){
    
       Inner();
    
    }
    
    function inner(){
    
       alert(inner.caller)
    
    }
    
    outer();

    inner.caller指向outer

    为了实现更松散的耦合 也可以通过arguments.callee.caller来访问相同的信息,如下代码:

      function outer(){
    
        inner();
    
      }
    
    function inner(){
    
       alert(arguments.callee.caller)
    
    }
    
     
    
    outer();

    es中函数是对象,因此函数也有属性和方法,每个函数到包含两个属性:lengthprototype,其中length属性表示函数希望接收的命名参数的个数

    对于es中的引用类型而言,protorype是保存它们所有实例方法的真正所在,换句话说,诸如toStringvalueOf等方法实际上都是保存在prototype名下,只不过是通过各自对象的实例反问罢了,es5,prototype属性是不可枚举的,因此使用for-in无法发现,

    每个函数都包含两个非继承而来的方法:applycall

    apply方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组(技巧可以用个方法将参数是逗号的转化为数组)

    call方法与apply方法的作用项目,他们的区别仅在于接收参数的方式不同,对于call方法而言,第一个参数是this值没有变化,变化的是其余参数都直接传递给函数.

    var s1=”some text”;
    
    var s2=s1.substring(2);

    这段代码其实做了如下操作:

    1 创建String 类型的一个实例

    2 在实例上调用制定的方法

    3 销毁这个实例

    可以将以上三个步骤想象成执行下列se代码.

    var s1=new String(“some text”);
    
    var s2=s1.substring(2);
    
    s1=null

    引用类型和基本包装类型的主要区别就是对象的生存期,使用new 操作符穿件引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中,而自读创建的基本包类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁,例如:

    var s1=”some text”;
    
    s1.color=”red”;
    
    alert(s1.color)//undefined

    String 类型

    1. 字符方法

    charAtcharCodeAt,这两个方法都接收一个参数,即基于0的字符围着,其中,charAt方法单字符字符串的形式返回给定围着的那个字符.

    charCodeAt返回的是字符编码

    1. 字符串操作方法:

    concat:用于将一或多个字符串拼接起来,返回拼接得到的新字符串.

    slice:第一个参数指定子字符串的开始位置,第二个参数书字符串到哪里结束,传负值时是从后面开始截取

    substring: 第一个参数指定子字符串的开始位置,第二个参数书字符串到哪里结束,传负值时截取全部

    substr: 第一个参数指定子字符串的开始位置,第二个参数指定的则是返回的字符串个数

    1. 字符串位置方法

    IndexOflastIndexOf这两个方法都是从一个字符串中搜索给定的子字符串,然后返子字符串的位置,这两个方法的区别在于:indexOf方法从子字符串的开头向后搜索字符串,lastIndexOf方法是从字符串的末尾向前搜索子字符串

    1. trim方法

    es5位字符串添加了trim方法,这个方法会创建一个字符串的副本,删除前置及后缀的所有空格,然后返回结果.

    1. 字符串大小写转换方法
    2. 大小写转换方法有:

    toLowerCase()//小写,toLocaleLowerCase()//小写,toUpperCase()//大写和toLocaleUpperCase()//大写

    1. 字符串的模式匹配方法

    match方法是在字符串上调用这个方法,本质上与调用RegExpexec方法相同,只接受一个参数.

    search方法是用于查找,一个参数,由字符串或RegExp对象指定的一个正则表达式,search方法返回字符串中第一个匹配项的索引.

    localeCompare() 方法比较两个字符串,并返回下列值中的一个

    • 如果字符串在字母表中应该排在字符串参数之前,则返回一个负数,
    • 如果字符串等于字符串参数则返回0
    • 如果字符串在字母表中应该排在字符串参数之后,则返回一个正数

    Global对象

    1、 URI编码方法

    Global 对象的 encodeURI()encodeURIComponent方法可以对URI进行编码,以便发送给浏览器,有效的URI中不能包含某些字符串,例如空格,而这两个URI编码方法就可以对URI进行编码,他们用特殊的UTF-8编码替换所有无效的字符,从而让浏览器能够接受.

    他们的区别在于:encodeURI不会对本身属于URI的特殊字符进行编码,例如冒号,正斜杠,问号和井号,encodeURIComponent则会对它发现的任何非标准字符串进行编码

    2、 eval

    eval方法就像是一个完整的es解析器,它只接受一个参数,即要执行js字符串

    3、 Math对象

    minmax方法:

    它们用于确定一组数值中的最小值和最大值,这两个方法都可以接收任意多个数值参数.

    可以利用apply方法可以把数值作为参数传入minmax,例如:

    var values=[1,2,3,4,5,6,7,8];

    var max=Math.max.apply(Math,values);

    这个技巧的关键是把Math对象作为apply的第一个参数,从而正确地设置this,然后可以将任何数值作为第二个参数.

    Math.cell()执行向上舍入,即它总是将数值向上舍入为最接近的整数

    Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数

    Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数

    Math.random方法返回01之间一个随机数,不包括01,这个方法非常实用,因为可以利用它来随机显示一些名人名言和新闻事件,套用下面的公司就可以利用Math.random从某个整数范围中随机选择一个值.

    =Math.floor(Math.random()*可能值的总数+第一个可能的值)

     

  • 相关阅读:
    【Vue】状态管理
    【Vue】路由
    【Vue】组件
    【Vue】基础(数据 & 计算属性 & 方法)
    【Vue】基础(虚拟DOM & 响应式原理)
    【Vue】基础(生命周期 & 常用指令)
    【Vue】搭建开发环境
    【Mongodb】事务
    【Mongodb】视图 && 索引
    【Mongodb】聚合查询 && 固定集合
  • 原文地址:https://www.cnblogs.com/hetaojs/p/6051990.html
Copyright © 2011-2022 走看看