• 欢迎访问天天编码网站,Java技术、技术书单、开发工具,欢迎加入天天编码
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏天天编码吧
  • 我们的淘宝店铺已经开张了哦,传送门:https://shop145764801.taobao.com/

JavaScript教程

6.12 深入箭头函数

现在,让我们来深入箭头函数。 箭头函数不仅仅是创建较短函数的简洁语法。 在 JavaScript 中,我们经常需要创建一个短小的函数,然后在某个其他的地方被执行。 举例: arr.forEach(func) —— func 在forEach的每一个数组元素上被执行。 setTimeout(func) —— func被内建的定时器执行。 这个可以认为是 J……继续阅读 »

355浏览 0评论 1个赞

6.11 高级特性

截至目前,我们只讨论了绑定this的部分。现在,让我们来更加深入讨论绑定。 我们不仅可以绑定this,也可以绑定参数。这个情况很少使用,但在某些情况下非常实用。 绑定bind的完整语法为: let bound = func.bind(context, arg1, arg2, ...); 它允许绑定上下文为this,而且可以绑定函数的参数。 举例,我们有一个……继续阅读 »

285浏览 0评论 1个赞

6.10 函数绑定

当使用setTimeout结合使用对象方法时,或者传递对象方法时,存在一个著名的问题:”丢失this“。 忽然,this变得无法正常工作。对于 JavaScript 的新手而言,这是一个典型的场景,但是很多资深开发者也会遭遇此问题。 丢失this 我们已经知道,在 JavaScript中很容易丢失this。一旦某个方法被传递,与其对象……继续阅读 »

280浏览 0评论 1个赞

8.2 定制化错误,扩展错误

当我们开发应用时,我们经常需要某些自己的错误类来反映特定的事情,比如某些特定的错误情况。对于那些发生于网络的错误,我们可能需要HttpError,对于发生于数据操作的错误是DbError,对于搜索操作的错误是NotFoundError等等。 我们的错误应该支持基本的错误属性,比如message,name和stack等等。但是,它们也应该还具有其他的属性,比如……继续阅读 »

461浏览 0评论 1个赞

8.1 错误处理,try..catch

不管我们的编程技术如何厉害,我们编写的脚本还是可能出错。它们可能是由于我们的错误引发的,一个无法处理的用户输入,一个错误的服务器响应,或者其他无法完全预料的原因。 一般地,一个脚本在遇到错误时会理解停止,并打印错误信息到控制台。 但是,存在一个语法结构try..catch可以允许脚本来“catch”错误,使得脚本不停止,而是执行某些处理。 try………继续阅读 »

318浏览 0评论 1个赞

7.11 Mixins(混入)

在 JavaScript 中,我们仅可以继承单一的对象。一个对象只有一个[[Prototype]]。而且,一个类只可以继承另一个其他类。 但是,某些情况下那将是很不方便的。举例,我具有一个类StreetSweeper和另一个类Bicycle,然后我们想创建一个StreetSweepingBicycle类。 或者,我们具有一个Renderer类实现了模板,另一……继续阅读 »

278浏览 0评论 1个赞

7.10 类检查,instanceof

那个instanceof操作符用来检测某个对象是否属于某个特定的类。它会将继承性纳入考虑范围。 这样的一个检查在很多情况下非常实用,此处我们将使用该操作符来建立一个多态的函数,它会根据它们类型的不同来区别对待它们。 instanceof 操作符 语法为: obj instanceof Class 当obj属于Class或者它的父类时,就返回true。 举例……继续阅读 »

272浏览 0评论 1个赞

7.9 类继承,super

一个类可以继承另一个类。这是一个非常漂亮的语法,技术上是依赖于原型继承。 为了从另一个类进行继承,我们应该明确"extends"和对应的父类。 下面是Rabbit继承自Animal的示例: class Animal { constructor(name) { this.speed = 0; this.name = name; } ……继续阅读 »

255浏览 0评论 1个赞

7.8 Classes(类)

那个class构造器允许我们以干净,优雅的语法来创建基于原型的类。 class 语言 那个class语法是多才多艺的,我们从一个简单样例开始。 下面是一个基于原型的类User: function User(name) { this.name = name; } User.prototype.sayHi = function() { alert(th……继续阅读 »

257浏览 0评论 1个赞

7.7 Class patterns(类模式)

在 JavaScript中,存在一个特殊的语法结构和关键词class。但是在学习它们之前,我们应该明白,那个名为class(类)的概念来源于面向对象编程的理论。关于什么是面向对象编程,我就不在此讲解了,而且它是语言独立的技术。 在 JavaScript 中,存在多个著名的编程模式,可以在不使用class关键字的情况下实现class。本章节我们就将来学习它们。……继续阅读 »

255浏览 0评论 1个赞

7.6 原型的方法

在本章节中,我们将学习额外的方法,它们可以与原型进行配合使用。 JavaScript 存在其他的 get/set 原型的方法,除了我们已经学过的那些: Object.create(proto[, descriptors]) —— 使用给定的proto做[[Prototype]],和可选的属性描述符来创建一个空白对象。 Object.getPrototype……继续阅读 »

154浏览 0评论 1个赞

7.5 原生原型

那个”prototype”属性被广泛地应用于核心 JavaScript 本身。所有的内建构造函数都使用该特性。 首先,我们将看看如何将它应用于普通对象,然后如何应用于更加复杂的对象。 Object.prototype 假设我们输出一个空对象: let obj = {}; alert( obj ); // "[object Object]" ? ……继续阅读 »

157浏览 0评论 1个赞

7.4 F.prototype

在现代 JavaScript 中,就像在前面的教程中所描述的那样,我们可以通过__proto__来设置原型。但是,在早期并不存在上述方式。 JavaScript 在语法发明的早期就使用了原型继承的概念。它是该语言的一个核心特性。 但是,在以前,存在另一个方法(也是唯一的方式)来设置原型:就是使用构造器函数的那个”prototype”来……继续阅读 »

177浏览 0评论 1个赞

7.3 原型继承

在编程实践中,我们经常希望获取某些代码,并扩展那些代码。 举例,我们具有一个user对象,它具有自己的属性和方法,而且希望通过一些细微的修改来获得另外的admin和guest对象。我们可能会希望可以重用user已有的大部分代码,而且不是通过复制/粘帖的方式来进行,仅仅在其基础上创建出另一个对象。 JavaScript 中的原型继承特性就可以帮助我们完成此功能……继续阅读 »

148浏览 0评论 1个赞

7.2 属性获取器与设置器

JavaScript 中存在两种类型的属性。 第一种类型为数据属性。我们已经知道如何处理此类属性。实际上,截至目前为止,我们所使用的都是数据属性。 第二种类型为较新属性。它们被称为 accessor properties(访问器属性)。它们实际上是用于获取或者设置属性值的函数,但是对于外部代码而言就是普通的属性。 Getters 和 setters 访问器属……继续阅读 »

122浏览 0评论 1个赞

7.1 属性标记和描述符

正如我们所知,对象可以存储属性。 截至目前,对我们而言,一个属性就是一个简单的”键-值”对。但是实际上,一个对象属性可能非常复杂和可调节。 属性标记(Property flags) 一个对象属性,除了value,还具有三个特殊的性质(所谓的标记(flags))。 writable —— 如果为true,就可以被修改,否则的话就为只读……继续阅读 »

153浏览 0评论 1个赞

6.9 装饰器与转发 call与apply

对于处理函数,JavaScript提供了超乎想象的灵活性。它们可以被传递,被作为对象使用,而且,现在我们将学习如何在它们之间转发调用和装饰它们。 透明缓存 假设我们具有一个函数slow(x),其实一个CPU密集型函数,但是它的结果是非常稳定的。换句话说,对于相同的x,它的值总是相同的。 如果该函数被经常调用,我们可能希望缓冲(记录)不同x值所对应的结果,从而……继续阅读 »

156浏览 0评论 1个赞

6.8 定时任务:setTimeout 和 setInterval

对于函数,我们可能决定不是立即执行它,而是在某个随后的时间执行它。这就是所谓的“定时调用”。 JavaScript 中存在两个方法用于此目的: setTimeout 在某个指定的时间间隔后执行函数一次。 setInterval 以固定的时间间隔来执行函数多次。 那些函数都不是 JavaScript 规范的一部分。但是,绝大多数的环境都具有自己的内部定时器……继续阅读 »

249浏览 0评论 1个赞

6.7 new Funtion

JavaScript 存在另一种创建函数的语法。这种语法很少使用,但在某些情况下不得不使用。 语法 创建函数的语法: let func = new Function ([arg1[, arg2[, ...argN]],] functionBody) 换句话说,首先是函数参数(或者,更准确地说,它们的名称),最后的是函数体。所有的参数都是字符串。 我们通过实……继续阅读 »

151浏览 0评论 1个赞

6.6 函数对象,NFE

正如我们所知,函数在 JavaScript 就是值。 JavaScript 中的每一个值都有一个类型,那么函数的类型是什么? 在 JavaScript 中,函数是对象。 理解函数是对象的一个好办法是称函数为“action objects”(行为对象)。我们不仅仅可以调用它们,而且可以把它们当作对象:添加/移除属性,按引用传递等等。 “……继续阅读 »

123浏览 0评论 1个赞