JavaScript对象
一、对象简介
- 对象属于一种复合类型的数据类型,在对象中可以保存多个不同数据类型的属性。
二、对象分类
- 内建对象:由ES标准中定义的对象,在任何ES中都能实现,比如:Math、String、Number、Boolean、Function、Object等。
- 宿主对象:由JS运行环境提供的对象,目前来讲主要是由浏览器提供的对象,如:BOM、DOM.
- 自定义对象:由开发人员自己创建的对象。
三、创建对象
- 使用关键字new调用的函数是构造函数(constructor),构造函数是专门用来创建对象的函数。创建对象:var a=new Object();
- 使用typeof检查一个对象,返回object。
3.命名: 对象的属性名不强制要求遵守标识符的规范,但尽量按照标识符的规范去命名。如果要使用特殊的属性名。不能采用.的方式,需要使用另一种特殊的方式:对象[“属性名”]=属性值。使用[]更加灵活,在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性。
在这里插入代<script type="text/javascript">
var s=new Object();
s["123"]="aaa";
s["111"]="bbb";
var n="123";
var m="111";
console.log(s);
console.log(s[n]);
console.log(s[m]);
</script>码片
- 属性值:JS对象的属性值可以使任意的数据类型,甚至可以使一个对象。
- 添加属性、删除属性。
在这里插入代码片<script type="text/javascript">
var s=new Object();
s.name="123";
s.age="12";
console.log(s.name);
delete s.name;
console.log(s);
</script>
- 使用对象字面量创建一个对象:var s={};使用对象字面量可以在创建对象时,直接指定对象中的属性。语法:{属性名:属性值,属性名:属性值},如果要使用特殊的属性名,则必须加引号。
<script type="text/javascript">
var s={
name="111",
age=11,
gender="女"
};
</script>
- in运算符:通过in可以检查一个对象中是否含有指定的属性,有返回true,无返回false。语法:“属性名” in 对象名。
四、基本数据类型和引用数据类型
- 基本数据类型string、number、Boolean、null、undefined。JS中变量都是保存在栈内存中的,基本数据类型的值直接在栈内存中存储,值与值之间独立存在,修改一个变量的值不会影响到其他变量。
- 引用数据类型object,对象是保存在堆内存中的,每创建一个新的对象,就会在堆内存中开辟一个新的空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是一个对象引用,当一个变量修改属性时,另一个变量也会受到影响。
<script type="text/javascript">
var a=11;
var b=a;
a++;
console.log(a);
console.log(b);
var s=new Object();
s.age=11;
var b=s;
s.age++;
console.log(s.age);
console.log(b.age);
</script>
- 当比较两个基本数据类型的值时,就是比较值,而当比较两个引用数据类型是,他是比较对象的内存地址,如果连个对象一模一样,但是地址不同,会返回false。
JavaScript函数
一、函数简介
- 函数也是一个对象,函数可以封装一些可执行代码,在需要时执行这些功能,使用typeof检查一个函数对象时,会返回function。
二、函数创建及调用
- 创建一个函数:
<script type="text/javascript">
var fun1=function(){
document.write("不想学习");
console.log("啦啦啦啦啦!!!");
}
fun1();
</script>
- 可以将要封装的代码以字符串的形式传递给构造函数(可以但没必要),封装到函数里的代码被调用的时候才会执行。
var fun=new function("console.log('这是第一个函数');");
- 使用函数声明来创建一个函数
<script type="text/javascript">
function fun2(){
document.write("不想学习");
console.log("啦啦啦啦啦");
}
fun2();
</script>
- 立即执行函数:函数定义完理解被调用
(function(){
alert("这是一个匿名函数");
})();
三、参数和函数返回值
- 形式参数和实际参数(形参和实参):定义函数时指定一个或多个形参,声明形参就相当于在函数内部声明了对应的变量,在调用函数时,在()内指定实参,实参将会赋值给对应的形参。
- 实参可以使任意的数据类型,也可以是一个对象,当参数过多时,可以将参数封装到一个对象中,然后通过对象传递参数。
- 实参可以是一个对象,也可以是一个函数。
- 注意:调用函数时,解析器不会检查实参的类型,要注意是否有可能接收到非法参数,如果有可能则需要对参数进行类型的检查;多余实参不会被赋值;如果实参的个数少于形参的个数,则没有对应实参的形参的值将会是undefined。
- 返回值可以是任意的数据类型,也可以是一个对象,也可以是一个函数。
- return:如果return后不跟任何值,就相当于返回一个undefined,如果函数中不写return,则也会返回undefined。