JS总结

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对象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 变量 JavaScript的变量为弱类型变量,可以用来保存任何类型的数据。 var 可以声明各种类型的数据 在Ja...
    闫子扬阅读 564评论 0 1
  • 20170308 数据类型和变量 数据类型 (共有六种) undefined null number strin...
    周三胖阅读 639评论 0 0
  • 0 总结 本书的JS 第一章有讲语法有挺多常见的坑点和原理解释很不错 第二章DOM编程讲述了挺多API 第三章事件...
    王钰峰阅读 1,522评论 0 9
  • 一、let 和 constlet:变量声明, const:只读常量声明(声明的时候赋值)。 let 与 var 的...
    dadage456阅读 780评论 0 0
  • 于2016年八月,公司团队组织,行走于浙江湖州安吉县――全国生态旅游县,处处是风景,美到爆!
    迷人小王阅读 164评论 0 1