在JavaScript中,对象是一组无序的相关属性和方法的集合 ,所有的事物都是对象,例如字符串、数值、数组、函数等。
对象是由属性和方法组成的。
属性:事物的特征,在对象中用属性来表示(常用名词)
方法:事物的行为,在对象中用方法来表示(常用动词)
创建对象的三种方式
在JavaScript中,现阶段我们可以采用三种方式创建对象( object) :
利用字面量创建对象
利用new Object创建对象
利用构造函数创建对象
利用字面量创建对象
对象字面量:就是花括号{}里面包含了表达这个具体事物(对象)的属性和方法。
(1)里面的属性或者方法我们采取键值对的形式 键 属性名 : 值 属性值
(2)多个属性或者方法中间用逗号隔开的
(3)方法冒号后面跟的是个匿名函数
使用对象
(1).调用对象的属性我们采取 对象名.属性名
(2).调用属性还有一种方法 对象名['属性名']
(3) 调用对象的方法 对象名.方法名()
console.log(star.name)
//调用名字属性
console.1og(star['name']) // 调用名字属性
star.sayHi() ;
//调用sayHi方法,注意,一定不要忘记带后面的括号
利用new object创建对象
var obj = new Object(); //创建了一个空的对象
可利用等号=赋值的方法添加对象的属性和方法,每个属性和方法之间用分号结束。
利用构造函数创建对象
构造函数:是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。
function构造函数名() {
this.属性=值;
this.方法= function() {}
}
new 构造函数名();
// 1.构造函数
function Star(uname, age, sex) {
this.name = uname ;
this.age = age;
this.sex =
sex;
this.sing = function(sang) {
console . log(sang);
}
}
// 2.对象
var ldh = new Star ('刘德华’, 18, '男'); //调用函数返回的是一个对象
console.1og(1dh);
1.构造函数名字首字母要大写
2.我们构造函数不需要return就可以返回结果
3.我们调用构造函数必须使用new
4.我们只要new 构造函数名() 调用函数就创建一 个对象
5.我们的属性和方法前面必须添加this
构造函数,抽象了对象的公共部分,封装到了函数里面,它泛指某一大类( class )。
创建对象,特指某一个,通过new关键字创建对象的过程我们也称为对象实例化。
new在执行时会做四件事情:
1.在内存中创建一个新的空对象。
2.让this指向这个新的对象。
3.执行构造函数里面的代码,给这个新对象添加属性和方法。
4.返回这个新对象(所以构造函数里面不需要return )。
遍历对象属性
for in语句用于对数组或者对象的属性进行循环操作。
for(varkinobj){
console.log(k); // k 变量 输出 得到的是 属性名
console.log(obj[k]); // obj[k]得到是 属性值
}
内置对象
JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象
内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是 最基本而必要的功能(属性和方法)
查文档
MDN:Web 开发技术 | MDN
2.2如何学习对象中的方法
1.查阅该方法的功能
2.查看里面参数的意义和类型
3.查看返回值的意义和类型
4.通过demo进行测试
Math对象
Math.PI //圆周率
Math.floor () //向下取整
Math.ceil () //向上取整
Math,round() //四舍五入版就近取整 注意-3.5 结果是-3 四舍五入其他数字 都是四舍五入,但是.5 特殊 它往大了取
Math.abs () //绝对值
Math.max() / Math.min() // 求最大和最小值
日期对象
Date对象和Math对象不一样,他是一个构造函数,所以我们需要实例化后才能使用
Date实例用来处理日期和时间
//获取当前时间必须实例化
varnow=newDate();
console.log(now) ;
倒计时
用时间戳来做。用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时
间的毫秒数。再把剩余时间总的毫秒数转换为天、时、分、秒(时间戳转换为时分秒)。
转换公式如下:
d = parseInt(总秒数/ 60/60 /24); // 计算天数
h = parseInt(总秒数/ 60/60 %24); //计算小时
m = parseInt(总秒数/60 %60 ); //计算分数
S = parseInt(总秒数%60); //计算当前秒数
数组对象
检测是否为数组
instanceof 运算符它可以用来检测是否为数组
console.log(arr instanceof Array);
Array. isArray(参数);
console.1og(Array.isArray(obj )
添加删除数组元素的方法
数组排序
arr1.sort(function(a, b) {
// return a-b;升序的顺序排列
return b - a; //降序的顺序排列
});
数组索引方法
数组转换为字符串
字符串对象
基本包装类型
基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。
字符串的不可变
指的是里面的值不可变,虽然看上可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。
根据字符返回位置
字符串所有的方法,都不会修改字符串本身(字符串是不可变的) ,操作完成会返回一个新的字符串。
根据位置返回字符
字符串操作方法
简单类型与复杂类型
简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。
值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型
引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用) , 因此叫做引用数据类型
堆和栈
1、栈(操作系统) : 由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈; 简单数据类型存放到栈里面
2、堆(操作系统) :存储复杂类型(对象) ,一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。 复杂数据类型存放到堆里面
注意: JavaScript中没有堆栈的概念,通过堆线的方式,可以让大家更容易理解代码的一些执行方式