gpt4 book ai didi

javascript - 如何让每个实例继承自己的成员实例?

转载 作者:行者123 更新时间:2023-11-29 16:14:25 25 4
gpt4 key购买 nike

在下面的代码中,我有两个 Book Collections。一个系列有“Moby Dick”,而另一个系列有“The Firm”。但是,当我看第二集时,它也有白鲸记。如何创建不共享相同数据的书籍?

function Collection () {
var stuff = [];
this.get = function () {
return stuff;
};
this.add = function (item) {
stuff.push(item);
};
}
function Books () {}
Books.prototype = new Collection ();

var myBooks = new Books();
myBooks.add("Moby Dick");

var yourBooks = new Books();
yourBooks.add("The Firm");

console.log(yourBooks.get()); // ["Moby Dick", "The Firm"]

我最终选择了这个:

function Collection () {
var stuff = [];
this.get = function(){
return stuff;
};
this.add = function(item){
stuff.push(item);
};
}
function Books () {
Collection.call(this);
};

Books.prototype = new Collection();

Books.prototype.constructor = Books;

var myBooks = new Books();
myBooks.add("Moby Dick");

var yourBooks = new Books();
yourBooks.add("The Firm");

console.log(myBooks.get());

最佳答案

this 中使用每个实例的值:

function Books () {
this.stuff = [];
}

然后在集合中:

this.get = function () {
return this.stuff;
};

目前只有一个stuff数组是在设置Books的原型(prototype)时创建的。然后所有继承的 getter 和 setter 都引用那个变量。


Complete code :

function Collection () {
this.get = function () {
return this.stuff;
};
this.add = function (item) {
this.stuff.push(item);
};
}
function Books () {
this.stuff = [];
}

Books.prototype = new Collection ();

var myBooks = new Books();
myBooks.add("Moby Dick");

var yourBooks = new Books();
yourBooks.add("The Firm");

console.log(myBooks.get()); // ["Moby Dick"]
console.log(yourBooks.get()); // ["The Firm"]

关于javascript - 如何让每个实例继承自己的成员实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19256386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com