问题标签 [prototypal-inheritance]

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 投票
1 回答
184 浏览

javascript - Javascript继承范围问题

我正在尝试使用“伪经典继承”样式来了解 JS 继承。我做了很多谷歌搜索并阅读了经典文章。我熟悉 Java 的类结构,并试图了解 JS 的原型风格。我正在寻找香草JS,因为我想先了解基础知识。

我有一个简单的父/子测试类设置,需要一些有关范围规则的帮助。

1.) 我什么时候在类中和类外定义方法?

2.) 当我使用原型风格创建方法时,如何访问私有变量和私有函数?

3.) 子对象如何调用私有函数或访问父对象的私有变量?

4.) 子对象何时应该手动调用父构造函数?

}

我有三个对象,其中 80% 的代码是重复的,所以我创建了一个父对象和三个子对象。子对象具有使用和操作来自父对象的私有数据的方法。我让它工作的唯一方法是将所有我不喜欢的变量公开。同样,我对 Java 很熟悉,所以我可能过于努力地让 JS 像 Java 一样工作。

0 投票
5 回答
1220 浏览

javascript-framework - Backbone JS 不是很像 jQuery?

Backbone JS 强烈推荐你使用 jQuery。然而,它并没有做非常 jQuery 的事情。例如,jQuery 去掉了 new 操作符的必要性,backbone 大量使用了它。

另一方面,我正在寻找一个基于原型继承而不是经典继承(新)的框架。jQuery 不属于这一类,这只是我倾向于的一种架构风格。

有没有使用原型继承的框架,或者它是你自己的桥接模式?

0 投票
2 回答
551 浏览

javascript - javascript中的原型继承问题

我了解原型继承的全部意义,但我必须对实现感到困惑。我认为修改函数构造函数的原型会影响该构造函数的所有实例,但事实并非如此。JS 是如何从一个对象到它的原型进行方法查找的呢?

这是一个例子

我的印象是会在's 的原型中a寻找方法,因此在实例化之前或之后对 ' 原型的任何修改都会反映出来,但情况似乎并非如此。有人可以为我解释一下吗?talk()AAa

0 投票
2 回答
2041 浏览

javascript - JavaScript 函数调用是通过原型还是直接引用更快?

在 JavaScript 中,假设我想从 bObj 内部调用 aObj.myMethod()。在我的应用程序中,从设计的角度来看,aObj 是 bObj 的基类。JavaScript 是一种后期绑定语言,这意味着 myMethod 应该在运行时解析。函数解析是否更快

////////// 如果

1-我很自然地使用我的设计并说 bObj.prototype=aObj 然后在运行时我调用 bObj.myMethod:

////////////////////////或者

2- 通过原型的函数解析可能很慢,所以我将 aObj 作为属性保留在 bObj 中,并从 bObj 内部调用 aObj.myMethod()


我主要关心的是执行速度。在我的应用程序中,myMethod 每秒被调用数百万次。我知道大多数浏览器都会缓存指向最近调用的函数的指针,因此在这两种情况下,函数解析过程都会加快速度。然而,任何人都可以提供有关这两种情况下函数解析机制的更多细节,并提供一些见解,即哪种方法可能更快?解析机制在所有浏览器中都相同还是完全依赖于浏览器?

0 投票
1 回答
1354 浏览

javascript - 如何将某些东西插入原型链?

我有一个基本上是加强版的“课程” Array

这很好用。为这个“类”添加一个原型是行不通的:

我的第一个想法是将“原型”混合到result Array

这可行,但它会导致每个实例都有自己的原型属性副本。有没有办法NamedArray.prototype 插入到原型链中result Array

0 投票
1 回答
558 浏览

javascript - 子类如何获取超类的实例变量?

在下面的代码中,有 2 个类,一个是 Node,另一个是 Btree。如果在节点上调用 split() 实例,那么我想创建新节点,将其保存为父节点,然后更改 Btree 的根节点。

Node如何访问Btree.root?我必须使用类继承吗?(这段代码不是完整的代码,所以可能会有一些错误......虽然我只是想了解一下)

0 投票
2 回答
159 浏览

javascript - Javascript继承问题

为什么下面代码中的版本 2 不会产生与版本 1 相同的结果?

现场演示在这里。

0 投票
1 回答
128 浏览

javascript - 我们可以称之为真正的原型继承吗?

我总是对人们试图将某种形式的经典继承强制到 javascript 中的方式感到惊讶。我设计了一种方法来在某些对象 b 中继承对象 a 的原型方法,而无需将对象 b 的原型方法添加到对象 a,并且可以使用从1继承的对象的私有变量。现在我很好奇:你会说这真的是原型“继承”吗?是一种可行的方法吗?它有缺陷吗?

这是一些示例代码:

现在instanceA包含方法getConst1instanceB包含方法getConst1getConst2,正如您在这个 jsfiddle中看到的那样。

1通过在构造函数中分配原型方法,有效地使用由它创建的闭包。

0 投票
1 回答
226 浏览

javascript - 基于原型继承在现实生活项目中的应用

基于类的继承显示了它在创建大型编程系统,尤其是 GUI 系统方面的有用性。

如何在现实生活中应用基于原型的继承?我们应该如何构建系统而不是创建类层次结构?

这里是否存在与基于类的 OOP 一样的基于真实原型的 OOP 的任何编程模式?

0 投票
3 回答
1711 浏览

javascript - 从不在 DOM 树中的 jquery 对象复制画布节点

最近一段时间我一直在研究游戏引擎,最近我添加了我称之为影子 DOM 的东西。它只是一个包含 div 的 jQuery 对象,因此我可以将内容附加到它。每经过一帧,shadow DOM 的内容就会被复制到多个视口。我的问题是我无法复制画布元素的状态。

有没有办法解决这个问题而不必更新每个视口中的每个画布元素?