- A+
所属分类:Web前端
JavaScript 对象
对象
在JavaScript中,对象是一组无序的相关属性
和方法
的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。
对象是由属性
和方法
组成的。
- 属性:事物的特征,在对象中用属性来表示(常用名词)
- 方法:事物的行为,在对象中用方法来表示(常用动词)
保存一个值时,可以使用变量,保存多个值(一组值)时,可以使用数组,保存一个人的完整信息时可使用对象。
创建对象(object)的三种方式
1.利用字面量创建对象
对象字面量就是花括号{ }里面包含了表达这个具体事物(对象)的属性和方法。
- 键:相当于属性名
- 值:相当于属性值,可以是任意类型的值(数字类型、字符类型、布尔类型、函数类型)
对象的调用
- 对象里面的属性调用:对象名.属性名 ,这个小点,可理解为“的”
- 对象里面属性的另一种调用方式:对象名['属性名'],注意方括号里面的属性必须加引号
- 对象里面的方法调用:对象名.方法名(),注意方法名字后面一定加括号
//1.利用字面量创建对象{ } //var obj = { };创建了一个空的对象 var obj = { // { }里面的属性或者方法采取键值对的形式 键(属性名):值(属性值) name: '张三', age: '18', // 多个属性或者方法之间用逗号隔开 sex: '男', sayHi: function(){ // 方法后面跟的是一个匿名函数 console.log('hi~'); } } //使用对象 // 调用对象的属性 console.log(obj.name); // 第一种方法 对象名.属性名 console.log(obj['age']); // 第二种方法 对象名['属性名'] obj.sayHi(); // 第三种方法 调用对象的方法 sayHi 对象名.方法名() 需要添加小括号
2.利用new Object 创建对象
//利用new Object 创建对象 var obj = new Object(); // 创建了一个空对象 obj.name = '张三'; obj.age = 18; // 利用等号 = 赋值的方法,添加对象的属性和方法 obj.sex = '男'; // 每个属性和方法之间用 分号 结束 obj.sayHi = function(){ console.log('hi~'); } console.log(obj.name); console.log(obj['sex']); obj.sayHi();
3.利用构造函数创建对象
因为前面两种创建对象的方式一次只能创建一个对象,一次创建一个对象,里面有很多的属性和方法是大量相同的,因此可以利用函数的方法,重复这些相同代码,我们将这个函数称为 ——构造函数 ,这个函数里面封装的不是普通的代码,而是对象。
构造函数就是把对象里面一些相同的属性和方法抽象出来封装到函数里面。
//语法格式 //function 构造函数名(){ // this.属性 = 值; // this.方法 = function() { } //} //new 构造函数名(); // 构造函数 明星 泛指的某一大类 类似于java语言中的 类(class) function Star(uname, age, sex){ // 构造函数首字母要大写 this.name = uname; this.age = age; this.sex = sex; this.sing = function(sang) { // 属性和方法前面必须添加 this consloe.log(sang); } } // 调用构造函数必须使用 new // 对象 特指是一个具体的事物 刘德华 == {name: "刘德华", age:18, sex:"男", sing:f} var ldh = new Star('刘德华',18,'男'); // 调用函数返回的是一个对象 console.log(ldh.name); console.log(ldh['sex']); ldh.sing('忘情水'); var zxy = new Star('张学友',28,'男'); console.log(zxy.name); console.log(zxy.age); zxy.sing('吻别');
对象的实例化利用构造函数创建对象的过程
new关键字
new在执行时会做的四件事情:
1.new的出现,会让构造函数在内存中创建一个新的空对象
2.this就是指向这个新的对象
3.执行构造函数里面的代码,给空对象添加属性和方法
4.返回这个新对象(所以构造函数里面不需要return)
遍历对象属性(for in)
//遍历对象 var obj ={ name: '刘德华', age: 18', aex: '男', } for(var k in obj){ // for in 里面的变量通常写 k 或者 key conlose.log(k); // k 变量 输出 得到的是 属性名(name age sex) conlose.log(obj[k]); // obj[k]得到的是属性值(刘德华 18 男) }