JavaScript
引用数据类型 Object
对象
在 JavaScript
中, 所有的事务都是对象
- 布尔是对象
- 数字是对象
- 字符串是对象
- 日期永远都是对象
- 算术永远都是对象
- 正则表达式永远都是对象
- 数组永远都是对象
- 函数永远都是对象
- 对象永远都是对象
除了原始值, 所有的 JavaScript
值都是对象
JavaScript
原始值
- 原始值只得是没有属性或方法的值
- 原始数据类型指的是拥有原始值的数据
JavaScript
定义了 5 种原始数据类型
String
Number
Boolean
Null
Undefined
原始值是一成不变的, 只能改变变量的值
对象是包含变量的变量
JavaScript
变量能够包含单个的值- 对象也是变量, 但是对象能够包含很多值
- 值按照
key: value
键值对的形式
let obj = {
firstname: "Apple",
lastname: "Banana"
}
JavaScript
对象是命名值的集合
对象属性
JavaScript
对象中的命名值, 被称为属性
以键值对书写的对象类似于
PHP
中的关联数组Python
中的字典C
中的哈希表Java
中的哈希映射Rudy
和Perl
中的散列
对象方法
- 方法是可以在对象上执行的动作
- 对象属性可以是原始值, 其他对象以及函数
- 对象方法是包含函数定义的对象属性
JavaScript
对象是被称为属性和方法的命名值的容器
创建 JavaScript
对象
创建对象的方法
-
定义和创建单个对象, 使用对象文字
-
定义和创建单个对象, 通过关键字
new
-
定义对象构造器, 然后创建构造类型的对象
在 ES5
中, 也可以通过函数 Object.create()
来创建对象
-------------------------------------------------------------------------------3.16
使用对象字面量
这是创建对象最简单的方法
使用对象文字: 在 {}
中的键值对, 在一条语句中定义和创建对象
let person = {
name: "zhangsan",
age: 35,
city: "黑龙江"
}
使用 JavaScript
关键词 new
let person = new Object();
person.name = "zhangsan";
person.age = "34";
person.city = "黑龙江"
JavaScript
对象是易变的
对象是易变的, 他们通过引用来寻址, 不是值
如果 preson
是一个对象, 下列语句不会创建 person
的副本
let x = person;
对象 x
和 person
是同一个对象
对 x
的任何改变 都将改变person
let person = {
name: "zhangsan",
age: 35,
city: "黑龙江"
}
let x = person;
x.age = 10; // 同时改变 person
JavaScript
对象属性
属性是任何 JavaScript
对象最重要的部分
JavaScript
属性
属性指的是与
JavaScript
对象相关的值
JavaScript
对象是无需属性的集合属性通常可以被修改, 添加, 删除, 但是某些属性是只读的
访问 JavaScript
属性
let person = {
name: "zhangsan",
age: 35,
city: "黑龙江"
}
person.name //第一种
person["name"] // 第二种
let x = "age"; person[x] // 第三种
JavaScript
for..in
循环
JavaScript
for..in
循环语句遍历对象属性
for..in
循环中的代码块会为每个属性执行一次
let person = {
name: "zhangsan",
age: 35,
city: "黑龙江"
}
let x, txt = "";
for(x in person){
txt += person[x];
} // txt zhangsan35黑龙江
添加新属性
假设 person
对象已经存在
不能使用预留词作为属性名或者方法名
person.language = "Chinese"
删除属性
delete
关键词从对象中删除属性
delete
关键词会同时删除属性的值和属性本身删除完成, 属性高再被添加回来之前是无法使用的
delete
操作符被设计用于对象属性, 它对变量或函数没有影响
delete
操作符不应被用于预定义的JavaScript
对象属性
let person = {
name: "zhangsan",
age: 35,
city: "黑龙江"
}
delete person.age;
//delete person["age"]
// person = { name: 'zhangsan', city: '黑龙江' }
属性值
所有属性都有名称: 值,
值是属性的特征之一
其他特性包括: 可列举, 可配置, 可写
这些特性定义了属性被访问的方式
在
JavaScript
中, 所有属性都是可读的, 凡是只有值是可修改的
原型属性
JavaScript
对象继承了他们的原型的属性
delete
关键词不会删除被继承的属性,但是如果删除了某个原型属性, 则影响到所有从原型继承的对象