Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义javascript对象作为其他自定义javascript对象的属性_Javascript - Fatal编程技术网

自定义javascript对象作为其他自定义javascript对象的属性

自定义javascript对象作为其他自定义javascript对象的属性,javascript,Javascript,我想创建一些自定义javascript对象,其中一些具有其他对象的属性。我不确定这样做的语法是什么。下面是我的伪代码,其中包含一个person对象和一个order对象。order对象有一个我希望为person对象类型的属性。这在javascript中可能吗?如果可能,有人能给我一个基本的例子吗?谢谢 var person { name: "John", gender: "M", age: 3 } var order { customer: person, /

我想创建一些自定义javascript对象,其中一些具有其他对象的属性。我不确定这样做的语法是什么。下面是我的伪代码,其中包含一个person对象和一个order对象。order对象有一个我希望为person对象类型的属性。这在javascript中可能吗?如果可能,有人能给我一个基本的例子吗?谢谢

var person {
    name: "John",
    gender: "M",
    age: 3  
}

var order {
    customer: person, /*the property name is customer but of type person - is this possible?*/
    total: 100  
}
您可以这样做:

var person = {
    name: "John",
    gender: "M",
    age: 3  
};

var order = {
    customer: person,
    total: 100  
};
这也会过去。您缺少“=”符号。

您可以这样做:

var person = {
    name: "John",
    gender: "M",
    age: 3  
};

var order = {
    customer: person,
    total: 100  
};

这也会过去。您缺少“=”符号。

您几乎是正确的;您所需要的只是包含一些“=”

var person = {
    name: "John",
    gender: "M",
    age: 3  
}

var order = {
    customer: person, /*the property name is customer but of type person - is this possible?*/
    total: 100  
}

你几乎是对的;您所需要的只是包含一些“=”

var person = {
    name: "John",
    gender: "M",
    age: 3  
}

var order = {
    customer: person, /*the property name is customer but of type person - is this possible?*/
    total: 100  
}
您的代码几乎没有问题(缺少将匿名对象分配给变量的=):

您的代码几乎没有问题(缺少将匿名对象分配给变量的=):


当然,差不多就是这样。您的语法有点不正确,但只有一点点


这是你的例子:

当然,差不多就是这样。您的语法有点不正确,但只有一点点

以下是您的示例:

考虑构造函数:

function Person( name, gender, age ) {
    this.name = name;
    this.gender = gender;
    this.age = age;
}

function Order( customer, total ) {
    this.customer = customer;
    this.total = total;
}
用法:

var person1 = new Person( 'John', 'M', 3 );
var order1 = new Order( person1, 100 );
构造函数充当类。您可以通过
new
调用它们来创建新实例(人员和订单)。

考虑构造函数:

function Person( name, gender, age ) {
    this.name = name;
    this.gender = gender;
    this.age = age;
}

function Order( customer, total ) {
    this.customer = customer;
    this.total = total;
}
用法:

var person1 = new Person( 'John', 'M', 3 );
var order1 = new Order( person1, 100 );

构造函数充当类。您可以通过
new
调用它们来创建新实例(人员和订单)。

+1用于O.O.解决方案。。。但是如果可以的话,我建议使用一个框架(比如Mootools)而不是使用原生的jso.O.,基本上是一样的,但是它可以省去将复杂类型作为属性的麻烦。在本例中,如果您执行
person1.age=5
您还需要更改order1变量,如果不更改,以后可能会给您带来一些麻烦careful@pleasedontbelong它不会更改
order1
对象。此对象有一个
customer
属性,该属性是对与订单关联的人员的引用。一个特定的人(例如本例中的“约翰”)由一个对象表示。该人发出的所有命令都引用了该对象。我不确定这种设计模式以后会如何导致问题。=P srry我在考虑这个问题,但在这个示例中,它们直接在原型中设置属性,而不是在构造函数中设置属性(就像您所做的那样)。。我忘记了构造函数中的
这个
指向实例,并且不影响prototype@pleasedontbelong这就是为什么您通常只希望原型中有函数(所有实例共享的实例方法)。实例特定信息直接分配给实例,或通过闭包绑定到其特权方法。O.O.解决方案为+1。。。但是如果可以的话,我建议使用一个框架(比如Mootools)而不是使用原生的jso.O.,基本上是一样的,但是它可以省去将复杂类型作为属性的麻烦。在本例中,如果您执行
person1.age=5
您还需要更改order1变量,如果不更改,以后可能会给您带来一些麻烦careful@pleasedontbelong它不会更改
order1
对象。此对象有一个
customer
属性,该属性是对与订单关联的人员的引用。一个特定的人(例如本例中的“约翰”
)由一个对象表示。该人发出的所有命令都引用了该对象。我不确定这种设计模式以后会如何导致问题。=P srry我在考虑这个问题,但在这个示例中,它们直接在原型中设置属性,而不是在构造函数中设置属性(就像您所做的那样)。。我忘记了构造函数中的
这个
指向实例,并且不影响prototype@pleasedontbelong这就是为什么您通常只希望原型中有函数(所有实例共享的实例方法)。实例特定信息直接分配给实例,或通过闭包绑定到其特权方法。