问题标签 [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.
javascript - (开源)JavaScript 原型 OO 示例
赏金编辑:
我正在寻找以纯原型 OO 范式(想想 Self)编写的代码。不是原型 OO 和经典 OO 的混合体。我不想看到通用的 OO 包装器,而只是简单地使用原型 OO 技术并且只使用原型 OO 技术。
参考相关问题:
在上面的问题中,我主要关注的是
可以这样写原型OO吗?
我们是否需要构造函数和初始化逻辑,有哪些替代方案?
新问题:
基本上在大型开源项目中是否有javascript 原型 OO 的好例子?
澄清:
我将不得不澄清原型 OO的含义:
- 没有课程。只有对象。
- 类概念的模拟为零,同样只有对象和克隆对象来创建新对象。
原型 OO 的进一步说明:
JavaScript 中的原型 OO 与经典 OO 仿真之间的区别是一个非常灰色的区域。这并不是说我重视避免经典的 OO。我想以学术方式自己学习原型 OO,而不学习经典 OO 仿真和原型 OO 的(可能更优化)组合。
这就是我“禁止”类的原因,只是为了让我能够以纯粹的方式看到这些技术并扩展我自己的 OO 工具包。
例子:
像 jQuery 这样的流行示例不符合第二个标准。对象是一jQuery
大类仿真。它专注于从类中创建新对象,而不是克隆现有对象。
如果我真的知道使用“纯”原型 OO 的任何示例,我会向您展示。我相信 99% 的 JavaScript OO 受经典仿真的影响太大。
奖励积分
如果
- 它的评论很好/记录在案
- 有单元测试
- 在github上。
我还将接受有关如何编写超出您琐碎的 hello world 应用程序的原型 OO 代码的文章/教程和示例。
javascript - 如何在 Javascript 跨浏览器中删除对象
这在 Chrome 中有效,但是由于某种原因,Firefox 引用了这个错误。有没有更好的方法在方法中杀死这个对象?
错误:
javascript - 编写自定义 .on()/.bind() JavaScript 的最高效方式
我写了很多小库和模块,通常这些库和模块都有一些与之相关的事件。到目前为止,我一直在写这些(缩短了很多):
然后用户会做一些事情,比如:
有没有更好的性能更高的方法来做到这一点,或者这是实现这一点的标准方法?我想要一个可以放入任何 JS 项目的简单 API 来支持这种行为。
javascript - 你能推荐一本关于原型继承的好书吗?
我已经阅读了 Javascript: The Good Parts 并且目前正在阅读 Javascript Patterns,但想深入阅读 Protoypal Inheritance。它不一定是一本 JS 书,但如果是的话,那将是一个奖励。我想更多地了解它是如何存在的以及它的重要原则是什么,而不是仅仅阅读关于它是什么的一章。有什么建议么?
javascript - 正确的原型继承
所以我真的浏览了整个互联网,发现了许多在 javascript 中设置原型继承的不同方法。
他们中的一些人使用call()
.
他们中的一些人使用这个 sytnax: var rabbit.prototype = new Animal
。
其中一些在更改原型后更改了构造函数,有些则没有。
有些设置了一个有助于设置继承的小功能。
有人可以对此有所了解吗?有很多关于这个的帖子,但好的帖子已经有 2 年以上的历史了,它们在我心中造成了很大的混乱。
我想一劳永逸地知道如何在javascript中真正正确地设置原型继承。
要是简单点就更好了!
javascript - 这是 JavaScript 原型继承模型的缺陷吗?
我一直在从 John Resig 的JavaScript Ninja 的秘密中学习 JavaScript 中的原型继承,我想知道在下面的代码示例(我刚刚编造的)中会发生什么。
据我所知,所有这些代码行的结果是变量ninja1
引用了一个Ninja
对象,通过它的原型,有swingSword
方法,通过原型的原型继承Person
,有sayHello
方法。
我感到困惑的地方如下:由于属性swingSword
(恰好是一个方法)在将人员实例分配给Ninja
的原型之前已附加到 的原型,因此以后的分配不会覆盖Ninja
该属性/方法swingSword
的Person
实例?如果不是,那么Ninja
引用原型对象的原型属性如何既引用Person
实例又具有swingSword
属性?
javascript - Javascript原型实例化与伪经典实例化
我阅读了其他几篇关于原型与伪经典实例化的文章,但仍有一些问题。我在下面包含了代码以供说明。
问题是:
- 人实际上与人类相同吗?
- 约翰和爱丽丝本质上是一样的吗?
- 一种方式与另一种方式会产生哪些副作用?
是否有任何我应该注意的重大性能问题?
--
/li>
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;javascript - JavaScript 原型继承:为什么调用子对象的 getter/setter 会影响父对象?
请参阅下面的小提琴/代码:http: //jsfiddle.net/kmiklas/3YdTA/4/
问题:
- 为什么调用子的setter函数——在例子中,调用——
Object.create(99)
改变父的设置?请注意,虽然我们在orange的上下文中调用了这个函数,但它也改变了red的值。 - 更重要的是,如何将继承的 getter/setter 函数应用于子级,而不是父级?
- 我在这里想念什么?
javascript - 使用 Max/Min 扩展 Javascript 数组原型以查找值
查看如何在 Javascript Array 中查找最大值/最小值的不同方法,我经常可以看到扩展 Array 对象本身的原型。所以有:
但是我经常这样做:
这允许我调用 Array 对象本身没有参数的 max()。就我个人而言,我认为它没有任何问题,我一直想知道我是否遗漏了什么,并且这种方法有一些我忽略的主要问题?使用 as 安全Array.max(arrayhere)
吗?
编辑:说在第一个示例中我们在本机 Javascript Array 对象上创建静态方法并且在第二个示例中我们扩展 Arrays 原型是否正确?