在Google Javascript Coding Guidelines,有人说,我们不应该使用多级原型层次,因为“这些层次是更难获得正确的不是他们第一次出现!” 。其实我没有明白它的意思。我在哪里可以找到一个很好的例子来解释其用法并说明其不良影响?的Javascript:什么是多层次的原型层次,为什么我们应该避免
1
A
回答
0
5
这是两个级别的继承的例子:
// 1. level constructor
var Dog = function (name) {
this.name = name;
};
Dog.prototype.bark = function() { /* ... */ };
// 2. level constructor
var TrainedDog = function (name, level) {
Dog.apply(this, arguments); // calling the super constructor
this.level = level;
};
// set up two-level inheritance
TrainedDog.prototype = Object.create(Dog.prototype);
TrainedDog.prototype.constructor = TrainedDog;
TrainedDog.prototype.rollOver = function() { /* ... */ };
// instances
var dog1 = new Dog('Rex');
var dog2 = new TrainedDog('Rock', 3);
这里,dog1
继承了Dog
原型bark
方法,和dog2
继承了该方法(从Dog
原型)和来自rollOver
方法原型TrainedDog
。
2
我认为文章指的是没有手动设置原型链,但使用库,像goog.inherits
或util.inherits
你会做
var Child = function Child() { ... };
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
// for some common value of extend
extend(Child.prototype, {
...
});
这可以简化为
var Child = function Child() { ... };
goog.inherits(Child, Parent);
extend(Child.prototype, {
...
});
请注意这里goog.inherits
还涉及旧版浏览器中的Object.create
模拟。
相关问题
- 1. 多层次的益智游戏。我应该使用什么?图层或场景?为什么?
- 2. WCMS的层次结构是什么?
- 3. 什么是UICollectionView的层次结构?
- 4. 图层有什么用处?我能做些什么来添加图层,为什么我应该考虑图层?
- 5. 什么是“类层次结构:。
- 6. UIView的根层和根视图的层次关系是什么?
- 7. 为什么System.Decimal继承层次
- 8. 为什么我们应该避免锁定(这)?
- 9. JavaScript中的类的层次结构是什么?
- 10. 什么是对象类型的WebSphere层次结构?
- 11. 什么是典型HTML文档的“层次结构”?
- 12. 什么是类型层次结构的VS快捷方式?
- 13. 模型解析器在MVC中应该有哪一层应该是什么层
- 14. 为什么Javascript对象显示如此多层次的层次结构?如何正确声明和访问它?
- 15. 避免“utils的”包在项目层次
- 16. 什么是PHP应用程序的主要组件/层次?
- 17. 为什么多层次,多继承在asp.net
- 18. 什么是多层缓存?
- 19. OOP-什么是类层次结构的顶级名为
- 20. 为什么我的JavaScript onresize两次?
- 21. 我的CNN输出层应该是什么样子?
- 22. prefetch_related为多层次
- 23. 为什么我们每一次
- 24. 为什么底层会员供应商应该决定是否......?
- 25. DSP性能,应该避免什么?
- 26. 电子邮件可能的mimetype层次结构是什么?
- 27. 构建类层次结构的最佳方法是什么?
- 28. S3建议存储对象的层次结构是什么?
- 29. Facebook整合的不同层次是什么?
- 30. 什么是您的自定义异常层次结构?
你熟悉原型继承的基础? – 2012-01-14 02:05:34
这是什么原因?一旦你知道如何做对,你就没事。 – 2012-01-14 02:40:56
这并不是说你不应该使用它们。它只是说你应该使用一个库。简短的“不推荐”概要会引起误解,可能是指手动摆弄。 – user123444555621 2012-01-14 03:02:52