JavaScript object(对象)
让我们将信息结合在一起,方便管理。
写法
{
name:"海底捞",
price:100,
}
console输出结果
console.log({
name:"海底捞",
price:100,
});
//输出:{name:"海底捞",price:100,}
可以用变量将对象存储起来
let product ={
name:"海底捞",
price:100,
};
//用console显示
console.log(product);
可通过下面方式取得对象中的属性
let product ={
name:"海底捞",
price:100,
};
//用console显示
console.log(product.name);
//或
product["name"]; //必须通过引号写成字串形式
//输出结果为海底捞
可使用变量的方式将对象中的属性修改
let product ={
name:"海底捞",
price:100,
};
//用console显示
console.log(product);
product.price = 300;
console.log(product);
//可以看到price的值由100修改为了300
可以通过下面方式添加属性
let product ={
name:"海底捞",
price:100,
};
//用console显示
console.log(product);
product.price = 300;
console.log(product);
//可以看到price的值由100修改为了300
product.guoqi ="2027/6/7"
console.log(product);
//可以看到product新增了个属性名叫guoqi,其值为2027/6/7
JavaScript object(对象)与数组(Arry)区别
JavaScript中的数组(Array)和对象(Object)在数据结构和用途上有明显的区别:
数组(Array:
- 数组是一种特殊的对象,用于存储有序的、可通过索引访问的数据集合。
- 创建数组使用方括号
[]
,元素之间用逗号分隔。 - 数组的索引是数字类型的,从0开始递增。
- 数组提供了很多内建方法,如
push()
、pop()
、shift()
、unshift()
、splice()
、slice()
、sort()
和reverse()
等,方便对数组进行操作。 - 可以通过
length
属性获取数组的长度。
示例:
let arr = [1, 2, "three", {name: "John"}];
console.log(arr[0]); // 输出: 1
arr.push(4); // 在数组末尾添加元素let arr = [1, 2, "three", {name: "John"}];
console.log(arr[0]); // 输出: 1
arr.push(4); // 在数组末尾添加元素
对象(Object:
- 对象是无序的键值对集合,键必须是字符串类型(ES6中可以是Symbol类型),值可以是任意类型,包括函数(即方法)。
- 创建对象通常使用花括号
{}
或者构造函数new Object()
,属性名与对应的值之间用冒号:
分隔,不同属性间用逗号,
分隔。 - 对象的属性可以通过点记法
object.property
或者括号记法object['property']
来访问或修改。 - 对象没有预定义的顺序,不能直接通过索引访问其属性。
- JavaScript提供了一些内建方法来操作对象,如
Object.keys()
、Object.values()
、Object.entries()
、Object.assign()
、Object.create()
等。
示例:
let obj = {
name: "Alice",
age: 30,
sayHello: function() {
console.log("Hello, my name is " + this.name);
}
};
console.log(obj.name); // 输出: Alice
obj.sayHello(); // 调用对象的方法,输出: Hello, my name is Alice
总结:
- 数组 是有序的,可以通过索引(数字)访问元素,适合处理一组具有顺序关系的数据。数组有长度。数组键值可以重复,调用方法不同
- 对象 是无序的,通过字符串键访问属性,更适合描述一个实体的各种属性和行为。对象没有长度。对象没有长度,不能用for循环,对象键值唯一,调用方法不同
- 创建方式不同:数组表示有序数据的集合,而对象表示无序数据的集合。数组的数据没有”名称”(name),对象的数据有”名称”(name)。
JavaScript和PHP在处理对象(在PHP中通常称为关联数组或字面量)时存在一些显著的区别:
JavaScript对象:
-
JavaScript中的对象是动态的键值对集合,键可以是任何可转化为字符串的类型,但实践中通常为字符串或Symbol。
-
创建方式可以是通过对象字面量
{}
或者new Object()
构造函数。 -
属性可以直接添加、删除或修改,无需预先声明。
-
对象方法可以通过
.
符号调用。 -
提供了原型链(Prototype chain)支持继承。
let jsObj = { name: "John", age: 30, greet: function() { console.log("Hello, my name is " + this.name); } };
PHP关联数组/对象:
-
PHP有两种数据结构与JavaScript的对象类似:关联数组(array)和类实例(objects)。
-
关联数组是一个键值对集合,其中键必须是字符串或整数,而值可以是任意类型。创建关联数组不需要特殊的构造函数,直接使用方括号
[]
或者array()
函数。 -
类实例则需要先定义一个类(class),然后通过
new
关键字创建实例,属性和方法需要在类定义中声明,但也可以动态地给对象添加属性。 -
方法通过
->
符号调用。// PHP关联数组示例 $phpArray = array( 'name' => 'John', 'age' => 30, ); // PHP类实例示例 class Person { public $name; public $age; public function greet() { echo "Hello, my name is " . $this->name . "."; } } $person = new Person(); $person->name = "John"; $person->age = 30; $person->greet(); // 输出:Hello, my name is John.
区别总结:
- 动态性:JavaScript对象的属性可以在任何时候动态添加和删除,PHP关联数组也支持动态添加属性,但类实例的方法和属性需要预先定义或使用
__get
和__set
等魔术方法实现动态属性访问。 - 语法:JavaScript使用
.
或者[ ]
访问属性和方法,PHP使用->
访问对象的属性和方法,关联数组则使用['key']
来访问键值。 - 继承机制:JavaScript基于原型继承,PHP基于类的面向对象编程,有严格的类继承体系,包括接口、抽象类等概念。
- 默认行为:PHP中,如果不显式声明类成员的访问修饰符,则默认为public;而在JavaScript中,默认情况下所有对象的属性都是公开的。