我想制作一组不同人可以容纳的汽车的独特实例.汽车将具有相似的基本规格,但它们的一些属性和方法会有所不同.

我遇到的问题是我无法弄清楚它应该如何工作.您如何在JavaScript中处理或创建实例实例?

var Car = function(make,country) {
    this.make = make;
    this.country = country;
};

var Ferrari = new Car('Ferrari','Italy');

var fred = new Person() {};
var fred.cars['Ferrari'] = new Ferrari(1200,300000);

出于显而易见的原因,这会导致此错误.我知道它不是构造函数(见下文).

Uncaught TypeError: Ferrari is not a constructor

我正在寻找的是这样的.法拉利的每个不同实例都有不同的价格和价格.

var Ferrari = function(currentPrice,miles) }
    this.currentPrice = currentPrice;
    this.miles = miles;
    // this is an instance of car,aka it needs the result of this:
    // new Car('Ferrari','Italy');

};

弗雷德的法拉利是法拉利的一个例子,这是一个汽车的例子.问题是我想不出让构造函数构建构造函数的方法.有没有办法做到这一点,或者我只是以错误的方式解决这个问题?

其他说明:

我知道我基本上可以让每种类型的汽车都是一个类似静态JSON的对象,然后创建它的实例并添加新的唯一值.但是,我希望能够将Car作为构造函数,以便在需要时可以轻松制作.

我在这里显然缺少对OOP或JavaScript的一些理解,但如果有人能指出我正确的方向,那将会很棒.

解决方法

您正在寻找的是派生构造函数和相关原型,有时称为子类.

在老式的ES5中,它看起来像这样:

var Car = function(make,country) {
    this.make = make;
    this.country = country;
};
var Ferrari = function(currentPrice,miles) {
    Car.call(this,"Ferrari","Italy");
    this.currentPrice = currentPrice;
    this.miles = miles;
};
Ferrari.prototype = Object.create(Car.prototype);
Ferrari.prototype.constructor = Ferrari;

工作原理:

>法拉利是一个构造函数,在调用时,调用Car来引用新实例,以及Car需要的参数. Car会在实例上设置这些属性.然后我们继续使用法拉利的代码,该代码接受传入的参数并且(在上面)将它们记为属性.
>我们确保将由新法拉利(取自Ferrari.prototype)分配给实例的对象使用Car.prototype作为其原型对象,这样如果您向Car.prototype添加内容,它们将出现在法拉利也是如此.
>我们确保Ferrari.prototype上的标准构造函数属性指的是法拉利.

在ES2015中更好(今天可以通过转换使用,例如使用像Babel这样的工具):

class Car {
    constructor(make,country) {
        this.make = make;
        this.country = country;
    }
}
class Ferrari extends Car {
    constructor(currentPrice,miles) {
        super("Ferrari","Italy");
        this.currentPrice = currentPrice;
        this.miles = miles;
    }
}

如何在JavaScript中创建实例的实例的更多相关文章

  1. 基于Python+Pygame实现经典赛车游戏

    这篇文章主要为大家分享了一个基于Python和Pygame实现的赛车小游戏,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考一下

  2. 如何在JavaScript中创建实例的实例

    我想制作一组不同人可以容纳的汽车的独特实例.汽车将具有相似的基本规格,但它们的一些属性和方法会有所不同.我遇到的问题是我无法弄清楚它应该如何工作.您如何在JavaScript中处理或创建实例实例?

  3. 数组 – 如何在Perl中向数组中添加重复的值?

    我有一个数组@genotypes=“TTAGTTAG….”,并希望添加一个尖峰来创建一个新数组。我可以明显地将“TT”推到数组中20次–但是有更简单的做法吗?);解决方法是的,这是一个x。

  4. html5 代码画兰博基尼跑车,6不6你说的算!

    总结以上是DEVMAX为你收集整理的html5代码画兰博基尼跑车,6不6你说的算!如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部