Javascript:从返回超类实例的函数中设置子类原型的好处
Javascript: benefit of setting subclass prototype from a function that returns an instance of the superclass?
我最近一直在回归JavaScript主体的基础知识,在扩展我感兴趣的类时发现了一些细微的变化。我知道有很多选择,但我只关注1,以缩小这个问题的范围。
使用函数扩展类以设置子类原型:
function Shape(){};
function Square(){
Shape.call(this, arguments);
this.sides = 4;
}
function heir(p){
function f(){};
f.prototype = p;
return new f();
}
Square.prototype = heir(Car.prototype);
上面的和以下面的方式设置子类原型之间有什么区别?
Square.prototype = new Car();
使用heir
函数的例子取自O’Reilly的Javascript"权威指南"一书,所以我想知道这样一本像样的书是否有理由使用上面的例子而不是更简单的第二个例子?
您使用的是Object.create 的polyfil
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create?redirectlocale=en-美国&重定向段塞=JavaScript%2FReference%2FGlobal_Objects%2FObject%2Create
Child.prototype = Object.create (Parent.prototype);
好处是:
1:父构造函数可能需要传递在声明Child时不可用的其他复杂对象。
2:父实例特定的成员不在Child.prototype上。即使Parent.call(this…在Child构造函数中)会对这些成员进行阴影处理,它们仍然没有业务存在。
这里的更多信息:原型继承-编写
相关文章:
- 是否可以从父类访问子类的属性
- 子类访问父类's闭包变量
- Javascript关键字搜索子类Div值
- 如何通过Prototype或jquery移除子类的父类基类
- 如何将css类设置为表头单元格
- JavaScript数组的子类化破坏了快速枚举
- 如何在选择子li时将父li类设置为活动
- React 路由器 activeClassName 不会为子路由设置活动类
- 可以“;超级“;可以在子类的方法内部使用,在不直接引用的情况下调用相应的超类方法
- jQuery - 添加删除类 - 设置输入值
- 具有子类的构造函数中的Object.freeze
- JavaScript—父类和子类/对象的此问题
- 如何为所有子元素设置填充
- Javascript继承:从超类的方法设置子类的属性
- 子类中的 JavaScript 设置构造函数
- 创建新的子类对象时设置父类中定义的变量时出现问题
- 在 JavaScript 中设置子类的 .prototype
- 在子类主干中设置默认值
- Javascript:从返回超类实例的函数中设置子类原型的好处
- 删除-更改对象's '子类'通过在上面设置一个属性