对象
基本数据类型都是单一的值,创建的变量独立,不能成为一个整体
- 对象属于复合的数据类型,在对象中可以存放多个不同类型的属性
对象的分类
1、内建对象
由ES标准中定义的对象,在任何 的ES的实现中都能使用如:Math String Number Boolean Function Object
等
2、宿主对象
由JS的运行环境提的对象,目前 来讲主要由浏览器提供的对象。 如Bom浏览器对象模型 Dom 文档对象模型 console.log();document.writre();
3、自定义对象
由开发者自己创建
对象的基本操作(增删改查)
var obj = new Object();
在对象中保存的值称为属性
1.向对象中添加属性:
语法:对象.属性名 = 属性值
var obj = new Object();
obj.name = "臭猪";
obj.gender = "男";
obj.age = 22;
2.在对象中读取属性:
(如果读取对象中没有的属性会返回undefined)
语法:对象.属性
console.log(obj.age);
3.修改对象的属性值
语法:对象.属性名 = 新值
obj.name = "臭臭";
4.删除对象的属性
语法:delete 对象.属性名
delete obj.age;
属性名和属性值
- 属性名
对象的属性名不强制要求遵守标识符的规范,但尽量按照标识符的规范去做
如果要使用特殊的属性名,不能采用.的方式来操作,需要:对象[“属性名”] = 属性值
obj["lalal"] = 123;
console.log(obj["lalal"]);
- 属性值
//创建一个对象
var obj2 = new Object();
obj2.name = "猪猪";
//将obj2设置为obj的属性
obj.test = obj2;
console.log(obj.test.name);
in运算符
通过该运算可以检查一个对象中是否含有指定的属性
console.log("test" in obj);
返回false或true
基本数据类型和引用数据类型
- js中的变量都保存到 栈内存中的
1.基本数据类型的值直接在栈内存中存储
值与值之间是独立存在的,修改一个变量不会影响其他变量
2.引用数据类型是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,而变量保存的是对象的内存地址(对象的引用)
如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会收到影响
修改对象其中一个值时,无影响
当比较基本数据类型的值时,比较值;
当比较两个引用数据类型时,比较地址;
如果两个对象是一模一样的,但地址不同,它们也是不一样的
对象字面量
使用字面量来创建对象
var a = new Object();
//使用字面量来创建对象
var b = {};
直接指定对象中的属性
语法:{属性名:属性值,属性名:属性值,…}
var ojb2 = {
name:"🐖",
age:"22",
gender:"男"
};
函数
函数也是一个对象
函数中可以封装一些功能(代码),需要时可以 执行这些功能(代码),在需要时调用,使用typeof检查一个函数对象时,会返回function
- 可以将要封装的代码以字符串的形式传递给构造函数(很少用)
调用函数 语法:函数对象();
//可以将要封装的代码以字符串的形式传递给构造函数
var fun = new Function("console.log('hello!')");
//调用函数 语法:函数对象();
fun();
2.使用函数声明来创造一个函数*
//使用函数声明
function fun2() {
console.log("lalalal");
console.log("hahah");
}
//调用函数
fun2();
3.使用函数表达式来创建一个函数
var fun3 = function(){
console.log("dada");
}
fun3();
函数的参数
定义一个求两个数的和的函数(形参)
function sum(a,b){
console.log(a+b);
}
sum(2,3);
//5
函数调用时,解析器不会检查实参的类型,要注意是否会接收到非法的参数类型
function sum(a,b){
console.log(a+b);
}
sum(2,"hello");
//2hello
多余的形参不会被赋值
function sum(a,b){
console.log(a+b);
}
sum(2,4,"hello","77","ugu");
//6
如果实参的数量少于形参的数量,则没有对应实参的形参 将时undefined
function sum(a,b){
console.log(a+b);
}
sum(2);
//NaN
函数的返回值
可以使用return来设置函数的返回值
语法:return 值,return后的值将会作为函数的执行结果返回,可以定义一个变量来接收该结果
- 创建一个函数,用来计算三个值的和 return
//创建一个函数,用来计算三个值的和
function sum(a,b,c){
var d = a + b + c;
return d;
//return后面的语句都不会执行
alert("哈哈哈");
}
var result = sum(1,2,3);
console.log(result);
如果return语句不跟任何值就相当于返回一个undefined,如果函数中不写return,也相当于返回一个undefined
- 定义一个函数,判断一个数字是否是偶数 ,如果是则返回true 不是则返回false
function ha(){
return a % 2 == 0
}
var a = ha(11)
console.log(a);
定义一个函数,可以根据半径算一个⚪的面积,并返回计算结果
function cyc(r){
return 3.14 * r *r
}
var a = cyc(2)
console.log(a);
立即执行函数
函数定义完,立即被回调,只会执行一次
// 立即执行函数
(function(a,b){
console.log("a = " + a);
console.log("b = " + b);
})(11,2);