小编md2*_*312的帖子

为什么需要原型对象(在函数中)?

我已经阅读了大量有关原型的材料,并大致了解了继承。然而,这是一件困扰我的事情,我无法弄清楚。

dmitrysoshnikov.com 上有一个简化的示例,说明如何使用以下代码段实现原型继承:

// Generic prototype for all letters.
let letter = {
  getNumber() {
    return this.number;
  }
};
 
let a = {number: 1, __proto__: letter};
let b = {number: 2, __proto__: letter};
// ...
let z = {number: 26, __proto__: letter};
 
console.log(
  a.getNumber(), // 1
  b.getNumber(), // 2
  z.getNumber(), // 26
);
Run Code Online (Sandbox Code Playgroud)

下面是这张图

图1

然而,当我们开始使用实际的继承构造(使用 new 关键字)时,它开始看起来像这样:

图2

我明白它是如何工作的。我不明白的是为什么突然我们需要所有子实例都继承自的 Letter.prototype 对象,而不是像上面的第一个图那样拥有它。对我来说,第一个例子似乎没有任何问题。

我能想到的一个潜在原因是实际方法允许在类中实现静态方法/属性。在上面的示例中,如果您要添加一个静态方法,那么它将是一个添加到 Letter 对象而不是 Letter.prototype 对象的函数。子对象 (a,b,z) 将无法访问该函数。在第一个示例中,这种功能必须以不同的方式实现,但我仍然认为这不是创建新 Prototype 对象的充分理由。我认为这个静态方法功能可以在没有它的情况下实现。

我错过了什么吗?

编辑:

我认为有很多人试图解释我很感激的事情,但我不确定我的问题为什么 javascript 运行时被设计为以一种方式而不是另一种正确理解的方式运行。 …

javascript prototype prototype-programming

6
推荐指数
1
解决办法
159
查看次数

Swagger-ui 不断显示示例 petstore,而不是提供的 swagger.json

我按照说明使用 swagger-jsdoc 为现有节点 API 设置了 swagger 文档。swagger.json 已正确提供,我在 index.html 中 SwaggerUiBundle 的 url 参数中添加了它的路径,如下所示:

const ui = SwaggerUIBundle({
url: "https://my.domain:5292/swagger.json",
dom_id: '#swagger-ui',
presets: [
  SwaggerUIBundle.presets.apis,
  SwaggerUIStandalonePreset
],
plugins: [
  SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout" })
Run Code Online (Sandbox Code Playgroud)

但是,在浏览器中打开页面时,它尝试做的第一件事是显示默认的http://petstore.swagger.io/v2/swagger.json而不是我的swagger.json。它实际上失败了,因为我通过 https 提供页面,而 petstore 不是 https,但那是另一回事......

将我的地址手动输入到页面上的表单中的swagger.json中,可以按预期工作。它正确显示 API 页面并对其进行验证。但是,我不想总是在那里重新输入地址,并希望将其作为默认地址。

node.js swagger swagger-ui

5
推荐指数
1
解决办法
2万
查看次数