JavaScript 对象
JavaScript 对象是拥有属性和方法的数据。可以使用字符来定义和创建 JavaScript 对象,定义 JavaScript 对象可以跨越多行,空格跟换行不是必须的。
JavaScript 对象属性
通常认为 “JavaScript 对象是键值对的容器”。键值对通常写法为 name : value (键与值以冒号分割)。键值对在 JavaScript 对象通常称为对象属性,JavaScript 对象是属性变量的容器。
可以通过两种方式访问对象属性。objectName.propertyName
objectName['propertyName']
两种方式访问对象属性的区别:
1.点方法后面跟的必须是一个指定的属性名称,而中括号方法里面可以是变量。
2.中括号方法里面的属性名可以是数字,而点方法后面的属性名不可以是数字
3.当动态为对象添加属性时,必须使用中括号[],不可用点方法
更新对象属性
当你创建了一个对象后,你可以用.
或[]
来更新对象的属性。
var boy = {"name": "Jack","age": 8,"friends": ["Lily"]};
更改它的名称为“ Tom”,这有两种方式来更新对象的名称属性:
boy.name = “Tom”;
boy[“name”] = “Tom”;
添加对象属性
可以像更改属性一样给对象添加属性。
var boy = {"name": "Jack","age": 8,"friends": ["Lily"]};
boy.height = 130;
删除对象属性
我们同样可以删除对象的属性,例如:
var boy = {“name”: “Jack”,“age”: 8,“friends”: [“Lily”]};
var a = boy[‘age’]; // a 等于 8
// 删除 age 属性
delete boy[‘age’]; // 等价于 delete boy.age
var b = boy[‘age’]; // 等于 undefined
对象方法
对象方法是一个包含函数定义的属性。
可以通过以下语法来调用方法:对象名.方法名()
使用了 String 对象的 toUpperCase() 方法来将文本转换为大写:
var message = "Hello";
var a = message.toUpperCase();
代码执行后,a 的值将是:HELLO
方法是作为对象属性存储的函数。
使用 [] 读取对象属性
对象构造器
使用函数来构造对象:
function person(firstname, lastname, age, friend)
{
this.firstname = firstname;
this.lastname = lastname;
this.age = age;
this.friend = friend;
}
在JavaScript中,this
通常指向的是正在执行的函数本身,或者是指向该函数所属的对象(运行时)
创建 JavaScript 对象
一旦有了对象构造器,就可以创建新的对象实例
function person (name, age) {
this.name = name;
this.age = age;
}
var John = new person("John", 25);
var Loen = new person("Loen", 28);
对象初始化
使用英文大括号{}
创建单个对象
var John = {name: "John", age: 25};
var Loen = {name: "Loen", age: 28};
添加方法
方法是存储在对象属性中的函数,使用以下方式创建对象函数:methodName : function() { code lines }
使用以下方式访问对象函数:objectName.methodName()
this
关键词是当前对象的引用,可以使用 this
来访问对象属性和方法。
在构造函数中定义方法:
function person(name, age) {
this.name = name;
this.age = age;
this.changeName = function (name) {
this.name = name;
}
}
var a = new person("Loen", 28);
a.changeName("John");
定义了一个名为changeName的方法,该方法是一个函数,它接受参数名称并将其分配给对象的 name 属性。
也可以在构造函数外部定义一个函数,通过函数名关联到对象的属性上:
function person(name, age) {
this.name= name;
this.age = age;
this.birthyear = bornyear; // 关联 bornyear 函数
}
function bornyear() {
return new Date().getFullYear() - this.age;
}
var a = new person("Loen", 29);
document.write(a.birthyear());
以上代码中 new Date().getFullYear()
是获取今年完整的年份时间,将对象的 birthyear 属性赋予 bornYear 函数。当通过对象调用 bornYear 函数时, bornYear 函数中 this
指向这个对象。
将函数关联到对象属性时不需要写括号。要通过对象的属性名调用函数而不是直接调用函数。