【发布时间】:2014-08-19 04:39:03
【问题描述】:
我试图更好地理解 JavaScript 中的面向对象模式。我特别喜欢 EmberJS 使用父类对象的 .extend 和 .create 实现其类的方式。
我尝试自己实现一个基本版本,但没有成功,我新实例化的对象引用了相同的对象。即如果我通过公共方法增加实例 a 中的私有计数器 var,然后分别对实例 b 执行相同操作,b 将反映两个增量。
我能够通过 Object.create(myClass) 实现取消引用的对象,但是这是不可取的,因为我想在内部实现这一点,并且也不依赖客户端对该本地方法的支持。
这是我所拥有的 jsbin:http://jsbin.com/zepaju/6/edit?js,console
感谢您的帮助!
【问题讨论】:
-
旁白:我是candidate。
-
发现并修复,对手头的问题有任何想法吗?
-
@micahblu JavaScript 是 prototypical(基于原型);它实际上没有“类”,至少在传统意义上没有。
-
另外,巴拉克奥巴马的名字中只有一个“r”...
-
JavaScript 没有 private 修饰符,有些人使用闭包来模拟它们牺牲原型。这里解释了 JavaScript 中的原型以及如何使用它。 stackoverflow.com/questions/16063394/…
标签: javascript oop ember.js