在线直播课程

  1. javascript 的来历,为什么需要javascript?

    javascript的来历是这样的,首先我们先了解当时的背景,当时是199几年,上网还是一个比较稀奇的事情,当时的网页也是非常简陋的,都是由静态文本和简单的图片形成的。
    image

    当时人们都是用一个叫Netscape的浏览器来上网的,然后网速也非常的慢,下载一个网页要半天,然后我们的主人公,Brendan Eich在Netscape上注册用户的时候,点击提交按钮之后,过了38秒,然后服务器返回消息:”对不起,您忘了选择性别了“。Brendan Eich几乎要崩溃:”靠,怎么能够这样!这么简单的问题浏览器怎么不直接告诉我,还得让我把数据交到几千公里外的服务器网站,然后在那里检查才能发现问题吗?“

    他就觉得浏览器改革势在必行!

    Brendan Eich本来就是Netscape的员工,所以他对他的老板说:“这个浏览器不行呀,他无法与用户交互呀,体验非常差”。老板说:“我也有这样的想法,那这个工作就交给你了吧。但是现在我们用什么语言来实现呢?”正巧,这个时候,Sun公司把Oak语言改名为JAVA,并宣称这个语言可以“一次编写,到处运行”(write once, run anywhere),它看起来很有可能是未来的主宰。

    然后网景公司觉得这个语言很不错,于是将java以applet(小程序)的形式运行在浏览器中,然后呢,网景公司的人也都非常喜欢java,所以Sun公司和网景公司关系很好,最后网景公司就决定,这个网页的脚本语言呀,必须和java类似,但是要比java简单,因为要使得非专业的人员也能快速上手,然后Brendan Eich就是创作这个语言的负责人,但是Brendan Eich 对java没有什么兴趣,他对当时的函数式编程语言Scheme更加感兴趣,所以他也是为了完成公司给的任务,仅仅用了10天,就把这个语言给弄出来了。它的名字就叫javascript。把这个名字拆开来看,就是java+script,也就是java版的脚本语言,同时它借鉴了java的数据类型和内存管理机制。然后呢,因为Brendan Eich喜欢函数式编程,所以javascript借鉴了函数式编程的思想,将函数提升到了一等公民的位置。最后呢,javascript就是一个简化版的面向对象编程和一个简化版的函数式编程的结合体。这个就是javascript的来历。

  2. 有了javascript之后,我们能干什么?

    就像我们之前讲的故事那样,一些简单的逻辑判断,可以不用交给服务器了,我们直接用javascript就可以判断了,速度会快很多,然后我们也可以通过javascript操控HTML,DOM和浏览器。最能提升浏览器体验的东西,就是后来发明的XMLHttpRequest,因为之前javascript虽然可以控制网页,但是不能和服务器通信,如果想要更新一个网页,需要整个网页都需要刷新一遍,哪怕是仅仅一段文字的区别,有了XMLHttpRequest之后,javascript只需要向服务器的接口发出请求,然后等待服务器的响应,然后再做出相应的处理,更新页面什么的,而不需要再刷新整个页面了,就是这么一个小小的功能,让浏览器的体验好了很多,慢慢的,很多桌面的应用都可以在浏览器上实现了。

  3. javascript常用函数

    说了这么久历史,我还是讲讲大家更加关心的问题,我们收集到的反馈是大家对于javascript 的常用方法和语法不太熟悉,所以我就跟大家讲讲javascript的一些常用方法和语法吧,这两个我结合在一起,并给大家演示。

    javascript的内置对象有:

    • Array

    • Boolean

    • Date

    • Error

    • Function

    • JSON

    • Math

    • Number

    • Object

    • RegExp

    • String

    • Map

    • Set

    • WeakMap

    • WeakSet

    当然还有一些不常见的对象,大家可以自行去MDN的网站上看,其实我今天讲的内容大家也都可以在MDN上看,我们先看看我们的数组有哪些属性和方法。

    Array对象:

    属性

    • length

    Array方法:

    静态方法:

    • from()

      • 从一个类似数组(String)或可迭代对象(Map,Set,Arguments参数)中创建一个新的数组实例
    • isArray()

    • of()

      • 就是修改了array.length属性

    实例方法:

    • concat()

      • 返回的是浅拷贝的数组,也就是说如果数组中有对象引用,那么新的数组的引用和原来数组的引用是同一个,改变新数组的对象,也会改变原来数组的对象。
    • copyWithin() 改变原数组

    • entries() 返回一个新的Array迭代器

    • every()

    • some()

    • fill()

    • find()/findIndex()

    • flatten()

    • flatMap()

    • forEach()

    • filter() 不改变原数组

    • map() 返回一个新数组

    • reduce()

    • reduceRight()

    • reverse()

    • includes()

    • indexOf()/lastIndexOf()

    • join()

    • keys() 返回一个Array迭代器

    • pop()

    • push()

    • shift()

    • unshift()

    • slice() 浅拷贝

    • sort() 改变原数组

    • splice() 这个可以用来插入、删除元素

    • toLocaleString()

    • toString() 作为字符串操作的时候,调用的这个方法。

    像forEach(),map(),reduce(),find(),filter(),every(),some()这些方法,可以配合箭头函数一起使用,写起来非常的优雅。

    Object对象

    静态方法

    • assign()

    • create()

    • defineProperties()

    • defineProperty()

    • entries() keys() values()

    • freeze()

    • is()

    Math对象

    所有方法和属性都是静态的

    属性

    • E 自然对数

    • PI

    静态方法

    • abs()

    • acos()

    • acosh()

    • asin()

    • asinh()

    • ceil()

    • floor()

    • round()

    • random()

    • ......

    String对象

    属性

    • length

    静态方法

    • fromCharCode()

    • fromCodePoint()

    • concat() 不如使用 + 性能更好

    • endsWith()

    • startsWith()

    • includes()

    • indexOf()

    • lastIndexOf()

    • match() 正则表达式

    • padEnd() 填充字符串

    • padStart()

    • repeat()

    • replace() 可用正则表达式

    • search() 正则表达式匹配

    • slice()

    • substring()

    • substr()

    • split()

    • toUpperCase()

    • toLowerCase()

    • toLocaleLowerCase()

    • toLocaleUpperCase()

    • trim()

    • trimLeft()

    • trimRight()

    常用表达式

    • 解构赋值 (entries, 交换值, 对象)

    • 拓展运算符

    函数

    • arguments 对象(类数组对象,可迭代对象)

    • 箭头函数

    • 默认参数

    • 剩余参数

    什么是可迭代对象?

    内部定义了@@iterator(Symbol.iterator)属性的对象,比如一些内置对象(String,Array,Map,Set)这些都是可迭代对象,所以我们可以用for...of...循环,同时可以也可以使用拓展运算符...

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

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,145评论 0 13
  • JS 简史 Web 的兴起已经把 JavaScript 带到一个前所未有的地步, 了解JS 的历史更好的使用JS ...
    迷缘火叶阅读 1,625评论 0 1
  • title: JavaScript的历史layout: pagecategory: introductiondat...
    ichengzi阅读 4,450评论 0 23
  • 这个暑假过得很奢侈。老公什么都不让我做,每天好吃好喝,有时间就去逛逛街买自己喜欢的衣服化妆品,刷着自己的卡。真像极...
    懒懒的阿朱阅读 192评论 0 0
  • 六、 疼,钻心的疼,啊…… “小姐,小姐” 耳畔传来一声声慌张的呼唤,谁在叫她?好像是紫英姑姑。莲卿疼得浑身无力,...
    生生云阅读 524评论 0 0