365bet亚洲版登录-bet官网365入口

365bet亚洲版登录拥有超过百间客房,bet官网365入口的文化历经几十年的传承和积淀形成的核心内容获得业界广泛的认可,365bet亚洲版登录是目前信誉最高的娱乐场所,同国内外几百家网上内容供应商建立了合作关系。

精晓JavaScript的原型属性

理解JavaScript的原型属性

2016/06/21 · JavaScript · 2 评论 · 原型

本文由 伯乐在线 - alvendarthy 翻译,sunshinebuel 校稿。未经许可,防止转发!
菲律宾语出处:bytearcher。迎接参预翻译组。

理解 JavaScript 的prototype天性不太轻易。你也许知道它同面向对象编制程序(OOP)和指标承袭有关,但不见得对其才能原理极度通晓。

原型承接

面向对象编制程序能够透过众多路径完成。其余的言语,比如Java,使用基于类的模子完毕: 类及对象实例差别对待。但在 JavaScript 中从未类的概念,替代它的是全数皆对象。JavaScript 中的承袭通过原型承继达成:二个指标直接从另一指标承继。对象中蕴涵其持续连串中祖先的援引——对象的 prototype 属性。

class 关键字是在 ES6 中第二次引进 JavaScript 的。其实,它并不曾为面向对象承继引进新模型, class 关键字通过语法糖,完结了本文介绍的原型性子和构造函数。

JavaScript 达成持续的言语特征

以下语言特征合营促成了 JavaScript 传承。

  • 当尝试访谈 JavaScript 对象中不设有的个性时,深入分析器会查找匹配的对象原型。举个例子调用 car.toString(),如果 car 没有 toString 方法,就能够调用 car 对象的原型。 那几个查找进度会向来递归, 直到寻觅到非凡的原型只怕承继链尽头。
  • 调用  new Car() 会创立叁个新的靶子,并早先化为 Car.prototype。 那样就同意为新对象设置原型链。须求小心的是,new Car() 只有当  Car 是函数时才有含义。 此类函数即所谓构造函数。
  • 调用对象的二个成员函数时, this 的值被绑定为当下目的。例如调用 "abc".toString()this 的值棉被服装置为 "abc",然后调用 toString 函数。该才具扶植代码重用:肖似的代码,可在 this 为种种差别的值时调用。对象的成员函数,也被称作对象的诀要。

举个栗子

大家用面向对象编制程序,实现三个图谋矩形周长的例证。

JavaScript

function Rectangle(x, y) { this.x = x; this.y = y; } Rectangle.prototype.perimeter = function() { return 2 * (this.x + this.y); } var rect = new Rectangle(1, 2); console.log(rect.perimeter()); // outputs '6'

1
2
3
4
5
6
7
8
9
10
11
function Rectangle(x, y) {
    this.x = x;
    this.y = y;
}
 
Rectangle.prototype.perimeter = function() {
    return 2 * (this.x + this.y);
}
 
var rect = new Rectangle(1, 2);
console.log(rect.perimeter()); // outputs '6'

首先,大家定义构造函数 Rectangle。 根据专门的学问,我们大写构造函数名首字母,评释它能够用 new 调用,以示与其余常规函数的界别。构造函数自动将 this 赋值为风华正茂空对象,然后代码中用 xy 属性填充它,以备后用。

然后, Rectangle.prototype 新扩大一个透过 xy 属性计算周长成员函数。 注意 this 的选择,在不相同的靶子中,this 会有例外的值,这几个代码都足以健康工作。

末尾, 一个名字为 rect 的指标创造出来了。 它继续了 Rectangle.prototype, 我们能够调用 rect.perimeter(), 然后将结果打字与印刷到调控台。

prototype 属性名称带来的误会

有部分有关 JavaScript 的原型的误解。 一个目的的原型与对象的 prototype 属性实际不是贰回事。 前面三个用于在原型链中相称不设有的性质。前者用于通过 new 关键字创建对象,它将作为新创立对象的原型。 精通二者的差别,将救助您深透领略 JavaScript 中的原型特性。

在我们的事例中, Rectangle.prototype 是用 new Rectangle() 创设出来目的的原型, 而 Rectangle 的原型实际上是 JavaScript 的 Function.prototype。(子对象的原型是父对象的 prototype 属性)

对象中保存原型的变量,也被喻为内部原型引用(the internal prototype link),历史上也曾称之为 __proto__ ,对那个称谓始终存在有的争辩。 校正确的,它能够被称之为 Object.getPrototypeOf(...) 的重返值。

2 赞 5 收藏 2 评论

关于作者:alvendarthy

图片 1

三个热爱生活的玩意! 个人主页 · 作者的小说 · 16

图片 2

本文由365bet亚洲版登录发布于 Web前端,转载请注明出处:精晓JavaScript的原型属性

您可能还会对下面的文章感兴趣: