JS总结

作者: 邪瓶张起灵 | 来源:发表于2017-06-28 21:18 被阅读0次

    JS总结使用方法

    1.Number

    2.String

    使用模板字符串

    let a = 'this is a'
    let b = 10
    console.log(`${a} , b is ${b}`)
    // => this is a,b is 10
    

    3.Array

    拷贝数组使用扩展运算符

    let items = [1, 2, 3, 4, 5]
    let copyItems = [...items]
    

    使用Array.from将类似数组的对象转为数组

    const foo = document.querySelectorAll('.foo')
    const nodes = Array.from(foo)
    

    数组排序使用sort函数

    let Arr = [10, 9, 15, 6, 7, 1, 0]
    
    Arr.sort((a, b) => a - b)
    // => [0, 1, 6, 7, 9, 10, 15]
    
    Arr.sort()
    // => [0, 1, 10, 15, 6, 7, 9]
    
    let ArrString = ['a', 'B', 'c', 'A', 'e', 'C', 'G', 'f', 'b']
    ArrString.sort()
    // => ["A", "B", "C", "G", "a", "b", "c", "e", "f"]
    

    4.Object

    class的使用

    //定义类
    // class Point {}
    
    // let Point = class {}
    
    // let p1 = new class {
    //  constructor(name){
    //      this.name = name
    //  }    
    //}('张三')
    // p1.name // => "张三"
    
    let Point = class Me {
        constructor(x, y) {
            this.x = x
            this.y = y
            Me.prototype.test()
            // return Object.create(null)
            // constructor方法默认返回实例对象(即this)
            // 完全可以指定返回另外一个对象。
            //point instanceof Point // => false
        }
    
        toString() {
            return '(' + this.x + ', ' + this.y + ')'
        }
    
        static classMethod() {
            return 'this only in Point'
        }
        
    }
    
    Object.assign(Point.prototype, {
        test() { console.log('test extend') }
    })
    // toString方法是Point类内部定义的方法,它是不可枚举的。
    Object.keys(Point.prototype)
    // => []
    Object.getOwnPropertyNames(Point.prototype)
    // => ["constructor","toString"]
    
    let point = new Point(1, 2)
    let p1 = new Point(2, 3)
    let p2 = new Point(3, 2)
    
    Point.classMethod()
    // => "this only in Point"
    point.classMethod()
    // => TypeError: foo.classMethod is not a function
    
    p1.__proto__ === p2.__proto__ // true
    
    point.hasOwnProperty('x') // true
    point.hasOwnProperty('y') // true
    point.hasOwnProperty('toString') // false
    point.__proto__.hasOwnProperty('toString') // true
    
    // 可以使用 Object.getPrototypeOf 方法来获取实例对象的原型,然后再来为原型添加方法/属性
    Object.getPrototypeOf(point) // { constructor, toString, test }
    

    class的继承

    class Point {
        constructor(x, y) {
            this.x = x
            this.y = y
        }
    
        toString() {
            return '(' + this.x + ', ' + this.y + ')'
        }
    }
    // super关键字,它在这里表示父类的构造函数,用来新建父类的this对象
    // 子类必须在constructor方法中调用super方法,否则新建实例时会报错。
    // 这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。
    // 如果不调用super方法,子类就得不到this对象。
    class ColorPoint extends Point {
        constructor(x, y, color) {
            super(x, y) // 调用父类的constructor(x, y)
            this.color = color
        }
    
        toString() {
            return this.color + ' ' + super.toString(); // 调用父类的toString()
        }
    }
    

    5.Function

    使用解构赋值为函数设置默认值

    function test({id = null, name = 'name', text}, ...values) {
    
        console.log(id, name, text, values)
        // => 5 "name" undefined [1, 2, 3, 4, 5]
    
        return { id, name, text, values }
    
    }
    
    var obj = {
        id: 5
    }
    
    let {id, name, text = 'text', values} = test(obj, 1, 2, 3, 4, 5)
    
    console.log(id, name, text, values)
    // => 5 "name" "text" [1, 2, 3, 4, 5]
    

    6.Async

    Promise与async函数

    var action1 = (value) => {
        console.log('2.进入含有promise的函数')
        return new Promise((resolve, reject) => {
            setTimeout(() => {
    
                console.log('3.promise返回结果')
    
                resolve('success')
    
            },2000)
        })
    }
    var asyncFunction = async (value) => {
    
        console.log(`1.进入async函数,传入参数${value}`)
    
        var c = await action1(value)
    
        console.log(`4.结束async函数,promise返回结果为${c}`)
    
        return '5.async返回了Promise对象'
    }
    
    asyncFunction(1).then(res => console.log(res))
    
    // => 1.进入async函数,传入参数1
    // => 2.进入含有promise的函数
    // => 3.promise返回结果
    // => 4.结束async函数,promise返回结果为success
    // => 5.async返回了Promise对象
    

    相关文章

      网友评论

          本文标题:JS总结

          本文链接:https://www.haomeiwen.com/subject/mplpcxtx.html