为什么要设置原型's构造函数转换为其构造函数函数
Why set prototype's constructor to its constructor function?
关于这个脚本的一行:
function Vehicle(hasEngine, hasWheels) {
this.hasEngine = hasEngine || false;
this.hasWheels = hasWheels || false;
}
function Car (make, model, hp) {
this.hp = hp;
this.make = make;
this.model = model;
}
Car.prototype = new Vehicle(true, true);
Car.prototype.constructor = Car;
Car.prototype.displaySpecs = function () {
console.log(this.make + ", " + this.model + ", " + this.hp + ", " + this.hasEngine + ", " + this.hasWheels);
}
var myAudi = new Car ("Audi", "A4", 150);
myAudi.displaySpecs(); // logs: Audi, A4, 150, true, true
我的问题是:是什么
Car.prototype.constructor = Car;
做什么?更重要的是,不这样做的后果是什么?在什么情况下最有用?
它恢复了覆盖的原始原型对象上的.constructor
属性。人们修复它是因为它会在那里。
有些人喜欢做…
if (my_obj.constructor === Car) { ... }
这不是必需的,因为instanceof
是更好的测试IMO.
if (my_obj instanceof Car) { ... }
if (my_obj instanceof Vehicle) { ... }
相关文章:
- ES6构造函数返回基类的实例
- 使用Google Visualization动态调用构造函数
- javascript中对象构造函数中的var属性与this.properties
- 理解typescript中的构造函数接口
- 为什么构造函数不是构造函数
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 拦截对构造函数的调用
- 使用闭包共享构造函数参数
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 从js引擎的角度来看闭包和构造函数是如何工作的
- 如何使用此从对象访问构造函数
- Javascript:为什么是构造函数's __proto__属性Empty(){}
- 当一个重要的构造函数参数丢失时应该发生什么
- Chrome Javascript日期构造函数错误
- 如何使用构造函数's的输出,以便将值插入到对象中
- 为什么在调用父构造函数时在[]中发送数据
- 使用构造函数在JavaScript中初始化(从C#转换)
- 时间戳未正确从日期构造函数转换
- 为什么要设置原型's构造函数转换为其构造函数函数
- Javascript将普通函数转换为构造函数