【发布时间】:2016-10-21 00:04:18
【问题描述】:
我了解在 Javascript 中,原型可用于提供一种实现继承,这对于开发人员定义对象是有用的,这些对象是类似“类型”的更通用对象的改进(例如车辆
但是我应该在以下场景中使用原型吗...
应用程序使用户能够创建和编辑“过滤器”。
-
除了具有以下特征之外,“过滤器”是什么或做什么并不重要。
a) 每个过滤器都是一个对象,其属性(和方法)与其他过滤器完全相同。
b) 可以通过将另一个过滤器用作“模板”来创建过滤器(在“子”过滤器上保留对它的引用)。
c) 这样创建的过滤器可以不定义任何值,也可以定义部分或全部自己的值。
d) 过滤器未明确定义的任何值均取自过滤器的模板。任何不在模板上的都来自模板的模板,依此类推。如果祖先的值发生变化,所有没有为该属性定义自己的值的后代将反映祖先的变化值。 (
有必要向用户指出哪些属性是从模板过滤器继承而来的,哪些是在过滤器本身上设置的。
那么,利用已经为我提供 b) c) 和 d) 中描述的功能的 Javascript 原型是一种好习惯吗?或者我应该用指向其他对象的指针定义我自己的对象系统,并以某种方式自己处理所有继承规则?
我有疑问的原因是这个……
现在想象一下也有不同的类型过滤器。我可以很容易地看到使用原型的情况,其中不同类型的过滤器由开发人员定义“继承”更通用的原型,并包含更具体类型独有的附加属性和方法。 (例如滤镜
好的。因此,如果我将原型用于过滤器“模板”以及用于过滤器“类型”的原型,那么继承链可能会是服务于 2 个不同目的的原型的大混合,即
1)用户自定义过滤器-模板继承链,和
2)开发者定义的过滤器类型的继承链。
不好的做法?没关系?更好的解决方案?问题没有解释清楚? 请指教,谢谢!
【问题讨论】:
标签: javascript templates object inheritance prototype