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对象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

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