JS “对象、内置对象” 笔记

2022.7.9,周六学习记录博客。

今日学习时长:4h。

学习进度:对象,内置对象(未完)。

目录

对象

1.对象

2.创建对象

3. new 关键字

4.遍历对象

内置对象

1.内置对象

2.查文档

3.Math对象

4.日期对象

5.数组对象

6.字符串对象


对象

复习target

  • 为什么需要对象
  • 如何使用字面量创建对象
  • 如何使用构造函数创建对象
  • 说出 new 的执行过层
  • 如何遍历对象

目录

  • 对象
  • 创建对象的三种方式
  • new 关键字
  • 遍历对象属性

1.对象

1.1 概念

在JS 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。

对象 是由 属性 方法 组成的。

  • 属性:事物的特征,在对象中用属性来表示(常用名词)
  • 方法:事物的行为,在对象中用方法来表示(常用动词)

2.创建对象

2.1 利用字面量创建对象

对象字面量:就是花括号 { } 里面包含了表达这个具体事物(对象)的属性和方法。

{ } 里面采取键值对的形式表示

  • 键:为属性名
  • 值:为属性值,可以是任意类型的值(数字型、字符串型、布尔型、函数型等)
  • 注意 不同属性之间用 逗号 隔开。
  • 方法赋值时,采用的是匿名函数的形式。

对象的调用

  • 属性调用: 对象.属性名 或者 对象[ '属性名' ] 。注意方括号里面必须加引号
  • 方法调用: 对象.方法名(),注意方法名后要加括号

2.2 利用 new Object 创建对象

  • 利用等号 = 赋值,来追加对象的属性和方法
  • 每个属性和方法之间用 分号结束
var obj = new Object();    //创建一个空对象
obj.name = '张三丰';
obj.name = 18;
obj.sex = '男';
obj.sayHi = function(){
    console.log('Hi~~');
}

2.3 利用构造函数来创建对象

构造函数:是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。

  • 构造函数名字 首字母必须大写
  • 构造函数不需要 return 就可以返回结果
  • 调用构造函数 必须使用 new
//构造函数语法格式
function 构造函数名(){
    this.属性 = 值;
    this.方法 = function(){}
}
new 构造函数名();    //调用构造函数
// 示例
function Star(uname,age,sex){
    this.name=uname;
    this.age = age;
    this.sex = sex;
    this.sing = function(sang){
        console,log(sang);
    }
}
var ldh = new Star('刘德华',18,'男');    //调用构造函数创建对象
var zxy = new Star('张学友',19,'男');
console.log(ldh.name);
console.log(zxy['age']);
ldh.sing('冰雨');

2.4 构造函数与对象

  • 构造函数,如Star(),抽象了对象的公共部分,封装到函数里面,它泛指某一大类
  • 创建对象,如 new Star(),特指某一个,通过 new 关键字创建对象的过程我们也称为对象实例化

3. new 关键字

new的执行过程

  1. 在内存中创建一个新的空对象
  2. 让 this 指向这个新的对象
  3. 执行构造函数里的代码,给这个新对象添加属性和方法
  4. 返回这个新对象(所以构造函数里面不需要return)

4.遍历对象

for...in 语句用于对数组或者对象的属性进行循环操作。

建议用于对象,对象中的方法也可以遍历出来。

for in 的语法格式
for (声明变量 in 对象){
    //代码体
}

//遍历对象
var obj ={
    name:'lyp',
    age:18,
    sex:'男',
    fn:function(){}
}
for(var k in obj){
    console.log(k);         //k 变量 得到的是属性名
    console.log(obj[k]);    //obj[k] 得到的是属性值
}

内置对象

复习target

  • 说出什么是内置对象
  • 根据文档查询指定 API 的使用方法
  • 能使用 Math 对象的常用方法
  • 能使用 Date 对象的常用方法
  • 能使用 Array 对象的常用方法
  • 能使用 String 对象的常用方法

目录

  • 内置对象
  • 查文档
  • Math对下
  • 日期对象
  • 数组对象
  • 字符串对象


1.内置对象

  • JS中的对象分为3种:自定义对象、内置对象、浏览器对象。
  • 内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法)
  • 内置对象最大的优点就是帮助我们快速开发
  • JS提供了多个内置对象:Math、Date、Array、String等

2.查文档

学习内置对象的使用,可以通过查文档的方式学习,常用的查询文档网站有:MDN、W3C。

3.Math对象

3.1 常用函数

Math数学对象不是构造函数,不需要使用 new 来调用就可以直接使用。它具有数学常数和函数的属性和方法。

1.绝对值方法
console.log(Math.abs(-1));    //1
console.log(Math.abs('-1'));  //1, 存在隐式转换,会将字符型数据转换成数字型数据再进行绝对值转换
console.log(Math.abs('pink'));// NaN
2.三个取整数的方法
(1)Math.floot() 向下取整,往小取值
console.log(Math.floor(1.1));    // 1
console.log(Math.floor(1.9));    // 2
(2)Math.ceil() 向上取整,往大取值
console.log(Math.ceil(1.1));     // 2
console.log(Math.ceil(1.9));     // 2
(3)Math.round() 四舍五入法,其他数字都是四舍五入,但.5特殊往大取值
console.log(Math.round(1.1));    // 1
console.log(Math.round(1.9));    // 2
console.log(Math.round(1.5));    // 1.5
console.log(Math.round(-1.5));   // -1
console.log(Math.round(-2));     // -2

3.2 随机数 Math.random()

//1.代码示例:Math.random()
console.log(Math.random());
//2. 得到两个数之间的随机整数,并且包含这两个数
function gerRandom(min,man){
    return Math.floor(Math.random() * (max - min +1) + min);
}
console.log(getRandom(1,10));
// 随机点名案例
var arr = ['张三','张三疯','李四','李思思','盖伦','子威']
console.log(arr[getRandom(0,arr,length - 1)]);

案例2:猜数字游戏
//1.随机生成一个 1-10的整数,我们需要用到 Math.random()方法。
//2.需要一直猜到正确为止,所以需要一直循环。
//3.while 循环比较适合
//4.核心算法:使用 if else if 多分支语句来判断大于、小于、等于
function getRandom(min,max){
    return Math.floor(Math.random() * (max - min +1) + min;)
}
var random = getRandom(1,10);
while(true){
    var num = prompt('你来猜? 输入1-10之间的一个数字');
    if(num > random){
        alert('你猜大了');    
    } else if( num < random){
        alert('你猜小了');    
    } else {
        alert('你好帅哦,猜对了');
        break; // 退出整个循环程序,避免死循环    
    }
}

4.日期对象

4.1 概述

Date 对象和 Math 对象不一样,是一个构造函数,需要实例化(创建对象)后才能使用。Date 对象一般用来处理日期和时间。

4.2 使用方法

(1)获取当前方法必须实例化

(2)Date() 构造函数的参数:如果没有参数,就返回当前系统的当前时间。如果括号里有时间,就返回参数里的时间。例如日期格式字符串为 '2019-5-1',可以写成 new Date('2019-5-1') 或者 new Date('2019/5/1')。

4.3 日期格式化

如果需要获取日期指定的部分,可以通过以下方法手动得到这类日期格式。

 

格式化日期 年月日
var date = new Date();
console.log(date.getFullYear());   //返回当前日期的年
console.log(date,getMonth()+1);   //返回月份,但比当前的月份小1月。即返回的月份是0-11之间。
console.log(date.getDate());       //返回的是 几号
console.log(date.getDay());        //返回的是周几。周一返回1,周六返回6,周日0
// 案例,输出当前日期,格式化为: XXXX年X月X日 星期X
var year = date.getFullYear();
var month = date.getMonth() + 1;
var dates = date.getDate();
var arr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
var day = date.getDay();
console.log('今天是' + year + '年' + month + '月' + dates + '日' + arr[day]);

案例2:要求封装一个函数返回当期的时分秒  格式为:08:08:08
function getTimer(){
    var time = new Date();
    var h = time.getHours();
    h = h <10 ? '0' +h : h; //如果小时数小于0,就在h前面添加字符“0”
    var m = time.getMinutes();
    m = m <10 ? '0' +m : m;
    var s = time.getSeconds();
    s = s <10 ? '0' +s : s;
}

4.4 获得时间戳

以下方法可获得Date总的毫秒数(时间戳)。不是当前时间的毫秒数,而是距离1970年1月1日过了多少毫秒。

  • 通过 valueOf()、getTime() 获得
  • 通过 +new Date() 获得
  • H5 新增的方法: Date.now() 获得
//1.valueOf()  getTime()
var date = new Date();
console.log(date.valueOf());
console.log(date.getTime());
//2. +new Date()
var date1 = +new Date();
console.log(date1);
//3. H5新增的方法 Date.now()
console.log(Date.now());

4.5 案例 倒计时

制作一个倒计时效果的案例

  • 核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时。但不能拿 时分秒 直接相减,比如05分减去25分,结果会是负值。
  • 用时间戳解决。用于输入时间的时间戳减去当前时间的时间戳,得到的就是剩余时间的毫秒数。
  • 把剩余时间的毫秒数转换为 天、时、分、秒等

公式如下:

function countDown(time){
    var nowTime = +new Date();     //返回当前时间总毫秒数
    var inputTime = +new Date(time);    //返回的是用户输入时间总的毫秒数
    var times = (inputTime - nowTime) / 1000;    //times是剩余时间的总秒数
    var d = parseInt(times /60 /60 / 24);    //天
    d = d < 10 ? '0' + d:d;
    var h = parseInt(times /60 /60 % 24);    //小时
    h = h < 10 ? '0' + h:h;
    var m = parseInt(times /60 % 60);    //分
    m= m < 10 ? '0' + m:m; 
    var s =parseInt(times % 60); //秒s
    s = s < 10 > '0' + s:s;
    return d + '天' + h +'时' + m + '分' + s + '秒';
}
console.log(countDown('2022-12-1 18:00:00'));

5.数组对象

5.2 检测是否为数组

  • instanceof 运算符。
  • Array.isArray(参数) 方法。
//1.instanceof
var arr =[];
var obj ={};
console.log(arr instanceof Array);    // true
console.log(arr instanceof Array);    // false
//2. Array.isArray(待测参数);
console.log(Array.isArray(arr));    //true
console.log(Array.isArray(obj));    //false

5.3 添加删除数组元素的方法

 

//示例
var arr = [1,2,3];
console.log(arr.push(4,'pinke'))    //结果是 5,返回数组长度
//此时 arr的数组元素为 [1,2,3,4,'pink'];

//案例 筛选数组
// 有一个包含工资的数组[1500,1200,2000,2100,1800],要求把数组中工资超过2000的删除,剩余的放到新数组里面
var arr = [1500,1200,2000,2100,1800];
var newArr =[];
for(var i = 0; i < arr.length; i++){
    if(arr[i] < 2000){
        //以前做法:newArr[newArr.length] = arr[i];
        newArr.push(arr[i]);    
    }
}
console.log(newArr);

5.4 数组排序

//1.翻转数组
var arr = [1,2,3,4,5,6];
arr.reverse();
console.log(arr);    //输出 6,5,4,3,2,1

//2.数组排序(冒泡排序法)
var arr1 = [13,4,77,1,7];
arr1.sort(function(a,b){
    return a - b;    //升序排列
    // return b-a; 则是降序排列
})
console.log(arr1);    // 输出 1,4,7,13,77;
// 调用sort方法时,不能漏写里面的function

5.4 数组索引方法

  • indexOf()。从前往后查找,返回找到的第一个元素的索引号
  • lastIndexOf()。从后往前查找,返回找到的第一个元素的索引号。
//示例
var = ['red','green','blue','pink','blue'];
console.log(arr.indexOf('blue'));    //返回2
console.log(arr.lastIndexOf('blue'));    //返回4

5.5 案例 数组去重

数组去重,要求去除数组中重复的元素

  1. 目标:把旧数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个,放到新数组中。
  2. 核心算法:遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,就添加到新数组中,否则不添加
  3. 怎么知道该元素在新数组中是否存在? 利用 新数组.indexOf(数组元素) 如果返回是 -1 则说明,新数组里面没有改元素。
  4. 要求将代码封装成一个函数
function unique(arr){
    var newArr = [];
    for(var i = 0; i < arr.length; i++){
        if(newArr.indexOf(arr[i] === -1)){
            newArr.push(arr[i]);        
        }    
    }
    return newArr;
}
var demo = unique(['blue','green','blue']);
console.log(demo);

5.6 数组转换成字符串

//1.toString() 将我们的数组转换为字符串
var arr = [1,2,3];
console.log(arr.toString());    //1,2,3
//2.join(分隔符)
var arr1 = ['green','blue','pink'];
console.log(arr1.join());    //green,blue,pink
console.log(arr1.join('-')); //green-blue-pink
console.log(arr1.join('&')); //green&blue&pink

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值