认识对象
前言
关于对象的一些基础知识
一、创建对象
有两种创建对象的方式:
- 调用Object()构造函数
- 对象字面量(object literal)(推荐使用)
1.调用Object()构造函数
以下演示:创建对象,添加属性,读取属性,修改属性和删除属性
//创建对象obj
var obj = new Object();
//添加name属性
obj.name = "tom";
//读取name属性
console.log(obj.name);
//修改name属性
obj.name = "jerry";
//删除name属性
delete obj.name;
//注意:读取不存在的属性时,不会报错,而是会返回undefined
console.log(obj.name);
2. 对象字面量
//注意:属性是一对名值对,它们之间用逗号隔开
var obj = {
name: "tom",
age: 18,
gender: "male"
};
二、关于属性名和属性值
1.属性名
属性名的命名不强制要求遵守标识符的规范,但是最好按照标识符的规范命名;如果需要使用特殊字符,不能使用.的方式添加属性,
需要使用以下方式:对象[“属性名”] = 属性值;
var obj = new Object();
//添加属性
obj["123"] = 789;
//读取属性
console.log(obj["123"]);//789
还可以创建一个变量,将属性名赋值给变量,这样读取变量就相当于读取相对应的属性
var obj = new Object();
//添加属性
obj["123"] = 789;
//创建一个变量n
n = "123";
//读取属性
console.log(obj[n]);//789
2.属性值
属性值可以是任意数据类型,所以对象里可以存放另一个对象
代码如下(示例):
//创建对象obj
var obj = new Object();
//创建对象obj2
var obj2 = new Object();
//添加属性
obj.test = obj2;
//读取test属性
console.log(obj.test);//{}
对象的属性值也可以是函数,这个函数有一个名字,叫方法(method),实际上,方法就是只能通过对象调用的函数。
var obj = new Object();
obj.sayHello = function(){
alert("我是sayHello方法~~")
};
obj.sayHello();//我是sayHello方法~~
三、变量、栈内存和堆内存
变量的值分为两种:原始值和引用值 。原始值包含String Number Boolean Null Undefined,引用值包含Object
1.原始值 (primative value)
给一个变量赋值,如果是原始值,保存在栈内存(stack)中
变量 | 值 |
---|---|
a | 10 |
b | 20 |
值与值之间是相互独立的
2. 引用值(reference value)
而给一个变量赋值,是个引用值,那么它就在堆内存(heap)中保存,在栈内存中保存一个对象的内存地址,并有一个指针(point)指向这个对象,操作对象是通过操作该对象的引用(reference)而实现
总结
如何创建对象,增、删、改属性,堆内存和栈内存