JavaScript(四)----对象和函数

(一)对象

对象的简介

对象:属于一种复合数据类型,在对象中可以保存多个不同数据类型的属性

对象的分类:
1、内建对象:由ES标准中定义的对象
例如: Math String Number Boolean Function Object.....
2、宿主对象:由JS的运行环境提供的对象,主要指浏览器提供的对象
例如: BOM DOM
3、自定义对象:由开发人员自己创建的对象
对象的基本操作
//使用构造函数来创建对象的函数
var obj = new Object();
//向对象添加属性  对象.属性名=属性值
obj.name = "迷人软";
obj.gender = "女";
obj.age = 16;

//修改对象的属性值
obj.name = "tom";

//删除对象属性  delete  对象.属性名
delete obj.name;
属性名和属性值

1、如果要使用特殊的属性名,需要采用另一种方式:

 //对象["属性名"] = 属性值;
 obj.["123"] = 111;

2、属性值:可以是任意的数据类型,甚至是一个对象

基本和引用数据类型
基本数据类型的值直接在栈内存中存储,值与值之间是独立存在,修改一个变量不会影响其它的变量;

对象是保存到堆内存中,每创建一个新的对象,就会在堆内存中开辟一个新的空间,而变量保存的是对象的内存地址,如果两个变量保存的是同一个对象引用,当通过一个变量修改属性时,另一个也会被影响

对象字面量
//语法: {属性名:属性值,属性名:属性值....}
var obj = {
       name:"迷人软",
       age:18,
       gender:"男"
     };
枚举对象中的属性

使用 for...in 语句

var obj = {
       name:"迷人软",
       age:18,
       gender:"男"
     };
for(var n in obj){
      console.log("属性名:"+n);
      console.log("属性值:"+obj[n]);
}

(二)函数

函数的返回值return
1、可以使用 return来设置函数的返回值;
2、 return后的值会作为函数的执行结果返回;
3、函数中 return后的语句不会执行;
4、如果 return后不跟任何值或者函数中不写 return,则返回 undefined
5、返回值可以是任意数据类型,可以是对象,也可以是函数
立即执行函数

函数定义完,立即被调用,往往只会执行一次

(function(a,b){
      console.log(a);
      console.log(b);
})(123,456); 
//123
//456
作用域Scope

在JS中有两种作用域:全局作用域和函数作用域

全局作用域:
1、直接编写在 script标签中的JS代码,都在全局作用域;
2、全局作用域在页面打开时创建,页面关闭时销毁;
3、全局作用域中有一个全局对象 window,可以直接使用;
4、创建的对象都会作为 window对象的属性保存,创建的函数都会作为 window对象的方法保存;

函数作用域:
1、调用函数时创建函数作用域,函数执行完毕后,函数作用域销毁;
2、每调用一次函数会创建一个新的函数作用域,它们之间相互独立;
3、在函数作用域中可以访问全局作用域的变量;
4、在全局作用域中无法访问函数作用域中的变量;
5、在函数中,不适用var声明的变量都会变成全局变量;

this

根据函数的调用方式不同,this会指向不同的对象:
1、以函数形式调用时,this永远是window
2、以方法的形式调用时,this就是调用方法的那个对象;

构造函数

构造函数和普通函数的区别就是调用方式不同,普通函数是直接调用,而构造函数需要使用new关键字来调用。

构造函数的执行流程:
1、立即创建一个新的对象;
2、将新建的对象设置为函数中的 this,在构造函数中可以使用 this来引用新建的对象;
3、逐行执行函数中的代码;
4、将新建的对象作为返回值返回

使用instanceof可以检查一个对象是否是一个类的实例

原型对象prototype

原型对象相当于一个公共的区域,所有同一个类的实例都可以访问到这个原型对象,我们可以将对象中共有的内容统一设置到原型对象中。

垃圾回收(GC)

当一个对象没有任何的变量或属性对它进行引用,我们将无法操作该对象。这称之为垃圾。

你可能感兴趣的:(javascript前端)