关于js的一些 | 青训营笔记

77 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第27天

箭头函数

  1. 如果形参只有一个,则小括号可以省略;
  const fn = item => {
  
  }
  1. 函数体如果只有一条语句,则花括号可以省略,函数的返回值为该条语句的执行结果;
    const fn = item => 1 + 1
  1. 函数体如果只有一条语句,且返回的是对象
   const fn = item => ({
       a: ''
   })
  1. 箭头函数 this 指向声明时所在作用域下 this 的值;
  2. 箭头函数不能作为构造函数实例化;
  3. 不能使用 arguments;

构造函数

定义一个构造函数,参数只能第一次赋值,之后就只能访问不能修改

方式一(推荐):

    const Person = (function () {
        let _gender = Symbol('gender')
        function P (name, gender) {
            this.name = name
            this[_gender] = gender
        }
        return P
    })()
    const p1 = new Person('李四', '男')
    console.log(p1); 只能在实例对象中看到 // { name: '李四', Symbol(gender): '男' }

方式二:

    const Person = (function () {
        let _gender = ''
        function P (name, gender) {
            this.name = name
            _gender = gender
        }
        P.prototype.getGender = () => {
            return _gender
        }
        return P
    })()
    const p1 = new Person('张三', '男')
    console.log(p1.getGender()); 在实例对象中通过访问构造函数的原型对象中的方法
    // 男

模板字符串

  1. 字符串中可以出现换行符
  2. 可以使用 ${xxx} 形式引用变量
const sum = 7
const str = `3 + 4 应该
等于${sum}` 
// 3 + 4 应该
等于7

转化为布尔类型

  1. 代表空,否定的值会转化为false, 如: '', 0, NaN, null, undefined
  2. 其余值都会转化成true(所有只需把转成false的记住就行)

改变函数内部this指向(3种方法)

  1. apply()方法,返回值就是函数的返回值,是调用函数
    fn.apply(thisArg, [argsArr]) // thisArg:在fn函数运行时指定的this值
    // argsArr:传递的值,必须包含在数组里面
  1. call()方法,返回值就是函数的返回值,是调用函数(apply()方法一样,只不过传参的方式不一样)
    fn.call(thisArg, arg1, arg2, arg3...) // thisArg:在fn函数运行时指定的this值
    // argsArr:传递的一些参数
  1. bind()方法,返回指定的this值和初始化参数改造的原函数拷贝
    fn.bind(thisArg, arg1, arg2, arg3...) // thisArg:在fn函数运行时指定的this值
    // arg1, arg2, arg3...:传递的一些参数