对象

创建对象

1.利用字面量创建对象

var obj={};

2.利用new Object创建对象

var obj=new Object();

3.利用构造函数创建对象(构造函数首字母要大写)

function Obj(){
 this.属性=值;
 this.方法=function(){}
 }

调用构造函数

new Obj();

构造函数不需要return就可以返回结果,返回结果就是对象

构造函数方法

var a=new Obj();(a为使用构造函数实例化的对象)
a.方法(实参);


对象属性

里面的属性或方法采用键值对的形式
键 属性名:值 属性值

多个属性或者方法中间用逗号隔开

键 必须是字符串,可以不加引号,如果键中带有连字符必须加引号(“background-color”)

方法冒号后面跟的是一个匿名函数

使用对象

console.log(obj.name);

console.log(obj['age']);

调用方法

obj.a();

删除对象属性

delete obj.age
或
delete obj['age']


对象的遍历

for in循环

for(var k in obj){
		console.log(k); (k变量输出的是属性名)
		console.log(obj[k]);  (obj[k]输出的是值)
}


对象的特殊情况



var obj={
          name:'xiaoming',
          age:18
        }
        
 console.log(obj == '[object Object]')

代码的输出结果为true

当对象与字符串进行值的判断时

因为一个是复杂数据类型 一个是普通数据类型

这时候会执行obj.valueOf(),结果为一个对象,没办法进行比较

就会执行obj.toString() ==> 变成 ‘[object Object]’

所以执行结果为true

但是如果是 === 那么就会判断类型 结果为false


同理

因为普通js对象上的键只能为字符串

所以当一个对象作为对象的键时 也会发生这种情况

js会将作为键的对象变为一个字符串[object Object]

var obj = {}
  var obj2 = {}
  obj2[obj] = 123
  console.log(obj2)

输出结果为 [object Object]: 123

因为键都为字符串 所以当有其他对象也作为键在obj2中加入条目时会进行覆盖

var obj = {}
  var obj2 = {}
  var obj3 = {}
  obj2[obj] = 123
  obj2[obj3] = 456
  console.log(obj2)

输出结果为 [object Object]: 456

原先的[object Object]: 123就被[object Object]: 456覆盖了


构造函数



内置函数



Math

1.Math取绝对值

Math.abs();

会将字符串型数字转换为数字型(隐式转换)
非数字型字符串为NaN

2.Math对象随机数

random()返回一个随机的小数 0 =< x < 1



返回两个数中的随机整数,包括这两个数

function getRandomIntInclusive(min, max) {
     min = Math.ceil(min);
     max = Math.floor(max);
     return Math.floor(Math.random() * (max - min + 1)) + min;




3.Math取整

Math.floor();

向下取整 往小了取值

Math.ceil();

向上取整 往大了取值

Math.round();

四舍五入,负数时特殊情况(-1.5=>-1)(往大取值)

4.Math.pow(基数, 指数) 取幂

5Math.sqrt() 二次方根

如果参数为负值,返回NaN



6Math.max() 参数中选最大值

参数可以为多个正负值

7Math.min() 参数中取最小值

参数可以为多个正负值

8.Math.PI 得到一个近似π的值

是一个属性 不是方法



9.正弦

Math.sin(Math.PI*30/180) // 0.5(参数为弧度)



10.余弦

Math.cos(Math.PI*60/180) // 0.5(参数为弧度)





Data

1.Data 日期对象

var date = new Date();

是一个构造函数 必须用new,返回当前系统的当前时间

var date = new Date(2021,11,4,0,0,0);(返回的是12月不是11月[0-11])
//月和日为一位时,前面加0不会有影响
var date = new Date('2021-11-4 8:8:8');(字符串时间返回输入的时间)
//月和日为一位时,前面加0会加8小时
var date = new Date(0);(输入时间戳)



2.Date 总的毫秒数



距离1970年1月1日过了多少毫秒

var date=new Date();
date.valueOf();
date.getTime();

var date=+new Date();

Date.now();(H5新增)



3.Date 获取现在的时间… 时分秒同理

Obj.getFullYear();