共计 1693 个字符,预计需要花费 5 分钟才能阅读完成。
(一)对象
对象的简介
对象:属于一种复合数据类型,在对象中能够保留多个不同数据类型的属性
对象的分类:
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)
当一个对象没有任何的变量或属性对它进行援用,咱们将无奈操作该对象。这称之为垃圾。