问题标签 [prototypal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
1554 浏览

javascript - (开源)JavaScript 原型 OO 示例

赏金编辑:

我正在寻找以原型 OO 范式(想想 Self)编写的代码。不是原型 OO 和经典 OO 的混合体。我不想看到通用的 OO 包装器,而只是简单地使用原型 OO 技术并且使用原型 OO 技术。

参考相关问题:

JavaScript 中的原型 OO

在上面的问题中,我主要关注的是

可以这样写原型OO吗?

我们是否需要构造函数和初始化逻辑,有哪些替代方案?

新问题:

基本上在大型开源项目中是否有javascript 原型 OO 的好例子?

澄清:

我将不得不澄清原型 OO的含义:

  • 没有课程。只有对象。
  • 类概念的模拟为零同样只有对象和克隆对象来创建新对象。

原型 OO 的进一步说明:

JavaScript 中的原型 OO 与经典 OO 仿真之间的区别是一个非常灰色的区域。这并不是说我重视避免经典的 OO。我想以学术方式自己学习原型 OO,而不学习经典 OO 仿真和原型 OO 的(可能更优化)组合。

这就是我“禁止”类的原因,只是为了让我能够以纯粹的方式看到这些技术并扩展我自己的 OO 工具包。

例子:

像 jQuery 这样的流行示例不符合第二个标准。对象是一jQuery大类仿真。它专注于从类中创建新对象,而不是克隆现有对象。

如果我真的知道使用“纯”原型 OO 的任何示例,我会向您展示。我相信 99% 的 JavaScript OO 受经典仿真的影响太大。

奖励积分

如果

  • 它的评论很好/记录在案
  • 有单元测试
  • 在github上。

我还将接受有关如何编写超出您琐碎的 hello world 应用程序的原型 OO 代码的文章/教程和示例。

0 投票
3 回答
3613 浏览

javascript - 如何在 Javascript 跨浏览器中删除对象

这在 Chrome 中有效,但是由于某种原因,Firefox 引用了这个错误。有没有更好的方法在方法中杀死这个对象?

错误:

0 投票
2 回答
135 浏览

javascript - 编写自定义 .on()/.bind() JavaScript 的最高效方式

我写了很多小库和模块,通常这些库和模块都有一些与之相关的事件。到目前为止,我一直在写这些(缩短了很多):

然后用户会做一些事情,比如:

有没有更好的性能更高的方法来做到这一点,或者这是实现这一点的标准方法?我想要一个可以放入任何 JS 项目的简单 API 来支持这种行为。

0 投票
1 回答
204 浏览

javascript - 你能推荐一本关于原型继承的好书吗?

我已经阅读了 Javascript: The Good Parts 并且目前正在阅读 Javascript Patterns,但想深入阅读 Protoypal Inheritance。它不一定是一本 JS 书,但如果是的话,那将是一个奖励。我想更多地了解它是如何存在的以及它的重要原则是什么,而不是仅仅阅读关于它是什么的一章。有什么建议么?

0 投票
3 回答
1134 浏览

javascript - 正确的原型继承

所以我真的浏览了整个互联网,发现了许多在 javascript 中设置原型继承的不同方法。

他们中的一些人使用call().
他们中的一些人使用这个 sytnax: var rabbit.prototype = new Animal
其中一些在更改原型后更改了构造函数,有些则没有。
有些设置了一个有助于设置继承的小功能。

有人可以对此有所了解吗?有很多关于这个的帖子,但好的帖子已经有 2 年以上的历史了,它们在我心中造成了很大的混乱。
我想一劳永逸地知道如何在javascript中真正正确地设置原型继承。

要是简单点就更好了!

0 投票
1 回答
98 浏览

javascript - 这是 JavaScript 原型继承模型的缺陷吗?

我一直在从 John Resig 的JavaScript Ninja 的秘密中学习 JavaScript 中的原型继承,我想知道在下面的代码示例(我刚刚编造的)中会发生什么。

据我所知,所有这些代码行的结果是变量ninja1引用了一个Ninja对象,通过它的原型,有swingSword方法,通过原型的原型继承Person,有sayHello方法。

我感到困惑的地方如下:由于属性swingSword(恰好是一个方法)在将人员实例分配给Ninja的原型之前已附加到 的原型,因此以后的分配不会覆盖Ninja该属性/方法swingSwordPerson实例?如果不是,那么Ninja引用原型对象的原型属性如何既引用Person实例具有swingSword属性?

0 投票
1 回答
318 浏览

javascript - Javascript原型实例化与伪经典实例化

我阅读了其他几篇关于原型与伪经典实例化的文章,但仍有一些问题。我在下面包含了代码以供说明。

问题是:

  1. 人实际上与人类相同吗?
  2. 约翰和爱丽丝本质上是一样的吗?
  3. 一种方式与另一种方式会产生哪些副作用?
  4. 是否有任何我应该注意的重大性能问题?

    --

    /li>
0 投票
1 回答
94 浏览

javascript - JavaScript Prototypal Inheritance Chain: "that" technique for accessing upper level properties and methods?

I need to access properties and methods one level up in the prototype chain, when using prototypal inheritance.

Is this an acceptable technique?

#xA;
0 投票
1 回答
247 浏览

javascript - JavaScript 原型继承:为什么调用子对象的 getter/setter 会影响父对象?

请参阅下面的小提琴/代码:http: //jsfiddle.net/kmiklas/3YdTA/4/

问题:

  • 为什么调用子的setter函数——在例子中,调用——Object.create(99)改变父的设置?请注意,虽然我们在orange的上下文中调用了这个函数,但它也改变了red的值。
  • 更重要的是,如何将继承的 getter/setter 函数应用于子级,而不是父级?
  • 我在这里想念什么?

0 投票
2 回答
436 浏览

javascript - 使用 Max/Min 扩展 Javascript 数组原型以查找值

查看如何在 Javascript Array 中查找最大值/最小值的不同方法,我经常可以看到扩展 Array 对象本身的原型。所以有:

但是我经常这样做:

这允许我调用 Array 对象本身没有参数的 max()。就我个人而言,我认为它没有任何问题,我一直想知道我是否遗漏了什么,并且这种方法有一些我忽略的主要问题?使用 as 安全Array.max(arrayhere)吗?

编辑:说在第一个示例中我们在本机 Javascript Array 对象上创建静态方法并且在第二个示例中我们扩展 Arrays 原型是否正确?