forin循环 + this 指向 + ES5的严格模式 + 字符串

本文详细介绍了JavaScript中的forin循环及其应用,包括如何遍历对象和数组。讨论了this的指向,如全局调用、对象调用、定时器和事件处理中的区别,以及如何通过call、apply和bind改变函数的this。此外,还阐述了向数组末尾追加元素的不同方法,ES5的严格模式开启方式,以及字符串的创建和操作,如length属性、索引访问、常用方法如substring和replace等。
摘要由CSDN通过智能技术生成

forin循环

  • 一般用来遍历对象的循环
  • 也可以遍历数组
  • 语法 for (var attr in obj) { code }
  • 对象中有多少个成员就循环多少回
  • 在每一次循环中,attr就是当前次的对象的属性名
  • 访问对象console.log(obj[attr])
    var obj = {
        name: 'Jack',
        age: '18',
        gender: '男'
    }
    for (var attr in obj) {
        console.log(obj[attr])
    }

this 指向

  1. 全局调用 函数名() this — window
  2. 对象调用 对象.函数名() this — 点前面是谁就是谁
  3. 定时器处理函数 this — window
  4. 时间处理函数 this — 事件源
  5. 自执行函数 this — window
  • 强行改变一个函数的 this 指向
    1. call()

      • 语法:函数名.call(你要改变的函数的 this 指向, 第二个参数开始,依次是给函数传递的参数)
      • 会直接把函数调用了
        fn.call(obj, a, b, c) // 这时 fn 里面的 this 已经指向obj了
    2. apply()

      • 语法:函数名.apply(你要改变的函数的 this 指向,第二个参数是一个数组[],数组里面是依次是给函数传递的参数)
      • 会直接调用函数
        fn.apply(obj, [1, 2, 3])
      • apply 还可以用于一些需要一个一个传参的情景下
        • 比如:var res = Math.max.apply(null, [1, 5, 9, 10]) 在这里使用 apply 可以实现一个一个的向 max 函数传递参数
    3. bind()

      • 语法:函数名.bind(你要改变的函数的 this 指向)
      • 不会立即执行
      • 返回值:是一个函数(已经被改变好 this 指向的函数)
      • var res = fn.bind(obj) // 把 fn 函数的 this 指向改变以后,把新的函数的地址给到 res,此时的 res 就相当于一个函数 可以直接被执行 res(1, 2, 3)
      • 它对函数的参数传递有两种方式
        1. 调用返回的函数的时候传递 res(1, 2, 3)
        2. 直接从第二个参数开始传递 var res = fn.bind(obj, 1, 2, 3)
      • 在事件中要是向改变 this 指向要使用 bind
      • div.onclick = fn.bind(obj) // 这时的 事件里面的 this 已经指向 obj 了

向数组末尾追加一个元素有多少种方式

    1. arr.push(1)
    2. var arr = [1, 2, 3]
        arr[arr.length] = '添加的元素'

ES5 的严格模式

  • 开启严格模式
    在作用于的开头写一个 use strict
  1. 变量必须有声明的关键字 var
  2. 函数的形参不允许重复
  3. 全局调用的函数没有this

字符串的创建方式

  • 字面量创建

    • var str = 'hello'
  • 内置构造函数创建

    • var str = new String('world')
  • 包装数据类型

    • 字符串是一个包装数据类型
    • 在使用的时候会转换成一个对象的形式,使用完以后会转换回简单数据类型

字符串的操作

  • 字符串有一个 length 属性,表示字符串的长度,是一个 number 数据类型

  • 字符串也是按照索引进行排列的 0 ~ 正无穷

  • 获取字符串的某一个字符 字符串[索引]

  • 可以使用 for 循环来进行遍历

  • 字符串的常用方法

    1. charAt() 按照索引找到字符,并返回字符的索引
    2. charCodeAt() 按照索引找到字符,返回的是字符的编码
    3. substring(开始索引, 结束索引) 截取字符串,包前不包后
    4. substr(开始索引, 个数) 按个数截取
    5. concat() 对字符串进行拼接
    6. slice(开始索引, 结束索引) 包前不包后
    7. split() 切割字符串,返回值是一个数组
    8. replace(把什么, 替换成什么) 替换字符串内容
    9. toLowerCase() 转小写
    10. toUpperCase() 转大写
    11. indexOf() 按照字符去获取索引,有的话返回索引,没有的话返回 -1
    • 反转字符串
      • str.split('').reverse().join('')
    • 数组去重
        var arr = []
        var newArr = []
        for (var i = 0; i < arr.length; i++) {
            if (newArr.indexOf(arr[i]) === -1) {
                newArr.push(arr[i])
            }
        }
    
        arr.sort(function (a, b) {return a - b})
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] === arr[i + 1])
            arr.splice(i, 1)
            i--
        }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值