JavaScript 这三种对象创建的方式你都知道嘛?
目录:
1、字面量创建对象
1.1 创建对象
就是使用创建变量的方式,等号后边加一对花括号,花括号里边包含了表达这个对象的属性和方法,属性与方法以键值对的形式来表示。
var 对象名 = {
"属性1": "属性值1",
"属性2": "属性值2",
.........
"方法名": function() {
方法体;
}
}
1.2 访问对象成员
1.2.1 访问对象属性
1、访问对象里面的属性,可以通过"对象名.属性名"的方式进行访问
//对象名.属性名;
Person.name;
2、访问对象里面的属性,还可以通过"对象名[“属性名”]"的方式进行访问,与数组索引访问元素方式类似,区别在于访问属性方括号里面的是键值名称,并且必须是字符串。
//对象名["属性名"];
Person["name"];
1.2.2 访问对象方法
访问对象里面的方法,可以通过"对象名称.方法名称()"的方式来进行访问。
//对象名.属性名();
Person.run();
2、new Object创建对象
2.1 创建对象
//创建对象
var 对象名称 = new Object();
//添加属性
对象名.属性名1 = 属性值1;
对象名.属性名2 = 属性值2;
.........
//添加属性
对象名.方法名 = function(){
方法体;
}
注意:
- Object对象:是复杂数据类型 object 的原始名称(原名称)。而object 类型是JavaScript中所有数据类型的基类,也就是说只要是我们所接触的基本数据类型都是由object衍生而来。
- new Object():会创建出一个新的object类型的数据,而且这个数据会存储在某个变量中。
2.2 获取对象属性和方法
//获取对象属性
对象名.属性名;
man.name;
//获取对象方法
对象名.方法名();
man.say();
3、自定义构造函数创建对象
3.1 构造函数
3.1.1什么是构造函数
构造函数是一种特殊的函数,主要是用来初始化对象的,它也是对象的一个成员,该方法在对象创建完成后默认执行。
3.1.2 构造函数执行的价值
- 构造函数的执行必须与new关键字搭配使用
- 构造函数执行完成后会自动创建一个构造函数所属的原始对象,我们可以理解为其实是构造函数在帮我们创建对象。
- 可以通过构造函数对原始对象中的属性等成员进行初始化赋。
3.2创建对象
// 自定义构造函数与创建自定义函数的语法基本相同
// 我们可以理解为这一步是创建了一个类
function 构造函数名称(参数1,参数2,...){
//创建属性必须使用this.使其指针指向该对象,让该变量与该对象发生关系,这样这个变量就是一个对象的属性了
this.name = 参数1;
this.age = 参数2;
......
//创建方法必须使用this.使其指针指向该对象,让该函数与该对象发生关系,这样这个函数就是一个对象的方法了
this.方法名 = function(){
方法体;
}
}
//实例化对象
var 对象名 = new 构造函数名称();
//访问对象属性
对象名.属性名;
//访问对象方法
对象名.方法名();
3.2.1 示例
function Man(){
this.name="张三";
this.age=20;
this.say=function(){
console.log("你好");
}
}
var man1=new Man();
console.log(man1.name);
man1.say();
3.2.2自定义构造函数创建对象的注意点
- 构造函数与普通函数其实没什么区别,特殊就特殊在可以创建对象并初始化对象成员……等
- 在使用构造函数创建对象时,构造函数名称必须使用帕斯卡命名法,即首字母大写。
- 构造函数内的属性和方法串改你必须使用"this.名称"的方式进行创建或添加。
- 构造函数不需要return返回结果
- 当使用自定义构造函数创建对象时(构造函数的调用),必须使用new关键字来调用构造函数。
- 使用自定义构造函数创建对象的方式,我们可以称之为创建了一个类,而构造函数对这一类对象的公共部分进行了抽象处理。其实我们可以理解为:类是对象的抽象,而对象是类的具体表现。
- 创建对象使用new 构造函数名称();特指某一类,通过new关键字创建属于这一类的一个新成员对象,这个过程我们称之为类的实例化。
3.2.3 new关键字的功能
- 在构造函数代码开始执行之前,创建一个新的对象
- 修改 this 的指向,把 this 指向实例化后的新对象
- 执行函数的代码
- 在函数完成之后,返回this,这种方法可以通过对象中的某个函数创建这个对象本身。
4、变量与属性、函数与方法两两之间的区别与联系
- 属性是对象的一个组成部分,而变量不是,并且变量只是一个存储数据的容器,基本上没有任何的实际含义。
- 方法是对象的一个组成部分,而函数不是,并且函数只是单独的封装了一些操作算法的简单容器。