javascript - 在原型(prototype)中使用数组

标签 javascript oop

我的 OOP JavaScript 有问题。如果对象中有一个数组,并且我将内容推送到对象的新实例中,它就会保存到所有实例中。有谁知道我做错了什么?

function Car(){}
Car.prototype.name = "";
Car.prototype.color = [];

var suv = new Car;
suv.color.push("black"); //black

var sedan = new Car;
sedan.color.push("green"); //black, green

最佳答案

您希望汽车的每个实例都有自己的数组,所以您不应该在原型(prototype)上定义它。原型(prototype)是您通常放置在所有实例之间共享的东西的地方,例如所有 Car 都具有的函数,或者未在每个实例上定义的属性的默认值:

function Car(name){
    if ( typeof name === 'string' )
        this.name = name;
    this.color = [];
}
Car.prototype.name = "No name"; // Default name

var suv = new Car('SUV');
suv.color.push("black");
console.log(suv.name); // "SUV"

var sedan = new Car;
sedan.color.push("green");
console.log(sedan.name); // "No name"

关于javascript - 在原型(prototype)中使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23502123/

相关文章:

javascript - Angular创建进度填充上传按钮

c++ - .cpp 文件中的虚拟 C++ 方法实现是否应该标记为虚拟?

php - 工厂方法和私有(private)变量

objective-c - 如何通过 RESTful API 处理 OOP 中信息的复杂可用性

仅使用 for 循环和条件语句的 Javascript 打印正方形

php - 通过文件上传缺少 PHP 中的临时文件。 Ajax

javascript - 使用 JavaScript 清理 SQL 输入的最佳实践?

python - 如果我到处都在处理字典,我应该把它们设为 "classes"吗?

PHP OOP 分页

javascript - 为什么自动完成会删除文本框图像