数组作为类javascript中的数据成员
array as data member in a class javascript
我是面向对象javascript的新手,正在尝试定义一个类,该类将数组作为数据成员。类的此数据成员将其他类的对象存储为数组。
这个的例子会更清楚
function classA(id, objB_01)
{
this.id = id; // data member that store a simple value
this.arrayname = objB_01 // How multiple instance of classB is stored in this array
}
function classB( id, name, status)
{
this.id = id;
this.name = name;
this.status = status
}
objB_01 = new classB("01", "john", "single");
objB_02 = new classB("02", "smith" "single");
objB_03 = new classB("03", "nina", "married");
现在我的问题是如何编写classA
,使classA
的单个实例包含一个数组,该数组存储classB
的多个对象
像这样的
objA = new classA("01",objB_01);
objA.arrayname = objB_02;
objA.arrayname = objB_03;
现在Finally objA
包含一个字符串和一个数组,用于存储B类的多个对象
请给我指正确的方向
一个选项可以是在构造函数中初始化一个空数组,也可以有一些方法向数组中添加对象。
function classA (id) {
this.id = id;
this.array = [];
this.add = function (newObject) {
this.array.push(newObject);
};
}
然后你可以这样做:
objA = new classA("01");
objA.add(objB_01);
objA.add(objB_02);
objA.add(objB_03);
深入研究JavaScript数组的规范文档可能会有一些好处。
除此之外,为了回答您关于拥有一个类a的问题,其中单个实例具有多个类B实例的数组-我相信您正在寻找数组方法。push()
同样,您可能希望利用JavaScript的标准重载构造函数模式来增强类定义。
像这样的
function classA(id, objarray)
{
this.id = id; // data member that store a simple value
this.arrayname = objarray || []; //if objarray isn't passed it'll initiate an empty array
}
function classB( id, name, status)
{
this.id = id;
this.name = name;
this.status = status
}
objB_01 = new classB("01", "john", "single");
objB_02 = new classB("02", "smith" "single");
objB_03 = new classB("03", "nina", "married");
var objBarray = [objB_01, objB_02, objB_03];
//now you can use construct & initiate classA in two different ways
//Push each object individually
var objA = new classA("01");
objA.arrayname.push(objB_01);
objA.arrayname.push(objB_02);
objA.arrayname.push(objB_03);
//or push the entire list at once
var objA = new classA("01", objBarray);
尝试
var data = {};
var classData = function (id, name, status, options) {
if (options) {
this.id = options.id;
this[options.arrayname] = [];
};
if (!this.hasOwnProperty("id")) {
throw new Error("No id set on `classData` array."
+ "Please set `id` for `classData` at `options` object")
};
var j = (id && name && status) ? JSON.stringify({
id: id,
name: name,
status: status
}) : false;
j ? this[Object.keys(this).filter(function (v) {
return v !== "id"
})[0]].push(JSON.parse(j)) : null;
return this
}.bind(data);
// set `id` at `data` ,
// add first item to `data.arrayname`
classData("01", "abc", "single", {"id":"01", "arrayname":"files"});
// set data at `data`
classData("02", "def", "married");
classData("02", "ghi", "single");
// read `classData`
console.log(classData());
var data = {};
var classData = function (id, name, status, options) {
if (options) {
this.id = options.id;
this[options.arrayname] = [];
};
if (!this.hasOwnProperty("id")) {
throw new Error("No id set on `classData` array."
+ "Please set `id` for `classData` at `options` object")
};
var j = (id && name && status) ? JSON.stringify({
id: id,
name: name,
status: status
}) : false;
j ? this[Object.keys(this).filter(function (v) {
return v !== "id"
})[0]].push(JSON.parse(j)) : null;
return this
}.bind(data);
// set `id` at `data` ,
// add first item to `data.arrayname`
classData("01", "abc", "single", {"id":"01", "arrayname":"files"});
// set data at `data`
classData("02", "def", "married");
classData("02", "ghi", "single");
// read `classData`
console.log(classData());
相关文章:
- 将数据从javascript文件导入VB.Net页面
- 如果返回的数据是javascript,$.ajax会自动执行脚本吗
- 异步获取数据使用JavaScript同步获取数据
- 数据与Javascript中的继承冲突
- 将数据从Javascript传递到Laravel控制器
- 使用 ng-change 对输入类型数据进行 JavaScript 取消事件
- 用 MySql 数据填充 JavaScript 数组
- 当以表单形式提交时,是否可以在PHP中访问新的数据* HTML5 / Javascript值?
- 对象'未设置的数据成员值
- 在搜索应用程序中用JSON数据交换JavaScript数组
- 如何确保我的谷歌图表数据在Javascript中从内存中删除
- 如何在 Javascript 中将函数绑定到对象数据成员的更改
- 如果数据存在Javascript,则剩余字符
- 将数据从javascript发送到html并使用php获取
- 将数据从Javascript生成的文本框传递到PHP
- 使用dbpedia服务器的json数据的javascript引用错误
- 将.CSV中的数据与JavaScript结合使用
- 如何在JavaScript中将数组声明为类的数据成员
- 数组作为类javascript中的数据成员
- JavaScript类语法:静态数据成员