2020-10-27对象|内置对象|数组简便方法

调用对象的属性,(1)我们采取   对象名.属性名  

                               (2)对象名['属性名']

调用对象的方法:  对象名.方法名()   千万别忘记添加小括号

创建对象的三种方式:

1.利用对象字面量创建:

 //(1)1里面的属性或者方法或者属性我们菜去键值对的形式  键  属性名 :值  属性值;
              //(2)多个属性或者方法中间用逗号隔开的
              //(3)方法冒号后面跟的是一个匿名函数

2.利用 New Object创建对象

  var dog = new Object(); //创建了一个空的对象

        dog.uname = 'keke';
        dog.color = 'red';
        dog.age = 5; //属性
        dog.type = '阿斯拉加犬';
        dog.sayHi = () {
            console.log('hi~');
        }
  • 我们是利用等号=赋值的方法,添加对象的属性和方法
  • 每个属性和方法之间用分号结束。

3.利用创建函数创建对象

我们为什么需要使用构造函数:因为前面两次创建对象的方式,一次只能创建一个对象

我们可以利用函数的方法重复这些相同的代码,我们就把这个函数称为构造函数  函数里面封装的是对象

构造函数:把我们对象里面一些相同的属性和方法抽象出来封装到函数里面。

 //四大天王相同的属性:名字,年龄,性别,相同的方法,唱歌
        //构造函数的语法格式
        // function 构造函数名(){
        //     this.属性 = 值;
        //     this.方法 = function(){}
        // }
        // new 构造函数名();//调用函数的方法

        function Star(uname, age, sex) {
            this.uname = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function(){
                  console.log(sang);
        }
        var ldh = new Star('刘德华', 18, '男');
        console.log(typeof ldh);
        //我们构造函数不需要return就可以返回结果
        //构造函数名字首字母要大写
        //我们调用构造函数   必须使用new
        //我们只要 new Star(),  调用函数就创建一个对象ldh{}
        //我们的属性和方法前面必须添加this
  •  //我们构造函数不需要return就可以返回结果
  •         //构造函数名字首字母要大写
  •         //我们调用构造函数   必须使用new
  •         //我们只要 new Star(),  调用函数就创建一个对象ldh{}
  •         //我们的属性和方法前面必须添加this

构造函数和对象的区别:

  • 对象是具体的事物
  • 构造函数是泛指的某一大类
  • 我们利用构造函数创建对象的过程也称为对象的实例化

 

new(调用函数的时候)关键字:

  1. new构造函数可以在内存中创建了一个空的对象
  2. this就会指向刚才创建的空对象
  3. 然后执行构造函数里面的代码,给这个空对象添加属性和方法
  4. 返回这个对象

遍历对象属性:

 var obj = {
                name: 'pink',
                age: 18,
                sex: 'nv',
            }
            //for ...in用于对数组或者对象的属性进行循环操作
        for (var k in obj) {
            console.log(k);
            console.log(obj[k]);
        }

 

对象:

  1. 对象可以让代码结构更清晰
  2. 对象复杂数据类型object
  3. 本质:对象就是一组无序的相关属性和方法的集合
  4. 构造函数泛指某一大类

内置对象:

  1.  能够说出什么是内置对象
  2. 能够根据文档查询指定API的使用方法
  3. 能够使用math对象的常用方法
  4. 能够使用Date对象的常用方法
  5. 能够使用Array对象的常用方法
  6. 能够使用String对象的常用方法

 

 

学习内容:

  • 1.内置对象
  • 2.查阅文档
  • 3.Math对象
  • 4.日期对象
  • 5.数组对象
  • 6.字符串对象

什么是内置对象:对象分为三种  自定义对象,内置对象,浏览器对象

 查阅文档:MDN /W3C   

http://developer.mozilla.org/zh-CN/

  • 查阅该方法的功能,查阅里面参数的意义和类型,返回什么值,利用代码验证

 

WDN

Math数学对象:不是一个函数对象,直接使用  在WDN中查找

 

封装对象:例子:

  var myMath = {
            PI: 3.4159,
            max: function() {
                var max = arguments[0];
                for (var i = 0; i < arguments.length; i++) {
                    if (arguments[i] > max) {
                        max = arguments[i];
                    }
                }
                return max;
            },
            min: function() {
                var min = arguments[0];
                for (var i = 0; i < arguments.length; i++) {
                    if (arguments[i] < min) {
                        min = arguments[i];
                    }
                }
                return min;
            },

        }
        console.log(myMath.PI);

注意:arguments是传递过来的实参

 

绝对值具有隐式转换的方

math随机数的方法   random()

返回一个随机的小数,在【0~1)之间  ,这个方法里面不跟参数,代码验证:

console.log(Math.random());

例子:得到两个数之间的随机整数

//想要得到两个数之间的随机整数,并且包含这两个整数
        //Math.floor(Math.random()*(max-min+1))+min;
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;

        }
        console.log(getRandom(1, 10));

例子:随机点名

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

        }
        // console.log(getRandom(1, 10));
        var arr = ['zhangsan', 'zahngsanfeng', 'lizi', 'lisisii'];
        console.log(arr[getRandom(0, 3)]);

 

例子:猜数字游戏:程序随机生成数字,然后用户输入一个数字,如果大于该数字,就提示 继续猜,如果小于该数字,就提示小了,继续猜,如果等于该数组,就提示答对了结束程序

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("您已经猜对,结束游戏");
                break;
            } else if (num > random) {
                alert("数字较大,请继续猜");
            } else {
                alert("数组较小,请继续猜");
            }
        }

重点:while循环

日期对象:date

date是个构造函数

var date = new Date();
        console.log(date);//返回现在的时间
  1. 没有跟参数,则返回当前系统的时间。
  2. date对象和math对象不一样,也是一个构造函数,所以我们需要实例化后才能使用
  3. date实例用来处理日期和时间
  4. 参数格式:参数常用的方法是  数字型 2019,10,01   或者是字符串型 '2019-10-1 8:8:8',但是如果是数字型的就是比你输入的月份大1

日期格式化:想要2019-8-8  8:8:8格式的日期:

需要获取日期指定的部分,所以我们要手动的得到这种格式

getMonth返回的月份小一个月,记得月份加一

getDay   周一返回的是1,周六返回的是6,但是周日返回的是0

想得到周几的话  可以将星期几存到数组里,然后利用索引求

日期格式话:想要得到2019-8-8  8:8:8格式的日期:

 

function getTime() {
            var time = new Date();
            var h = time.getHours();
            h = h < 10 ? '0' + h : h; //三元运算符
            var m = time.getMinutes();
            m = m < 10 ? '0' + m : m;
            var s = time.getSeconds();
            s = s < 10 ? '0' + s : s;
            return h + ':' + m + ':' + s;
        }
        console.log(getTime());

 

获取日期总的毫秒数:

Date对象是基于1970年1月1日(世界标准时间)起的毫秒数

我们经常利用总的毫秒数来计算时间,因为它更精确

 

//毫秒数通过   valueof()或者  getTime()得到
          var date = new Date();
        console.log(date.valueOf());

        var date1 = +new Date(); //+new Date()返回的就是总的毫秒数
        console.log(date1);

        console.log(Date.now());

案例:倒计时效果

核心算法:

 

  1. 输入的时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿着时分秒相减
  2. 用时间戳来做,用户输入时间总的毫秒数减去现在时间的毫秒数,得到的就是剩余时间的毫秒数
  3. 把剩余时间的总的毫秒数转换为天,时,分,秒(时间戳转换为时分秒)

    转换公式:   d=parseInt(总秒数/60/60/24);

                       h=parseInt(总秒数/60/60%24);

                       m=parseInt(总秒数/60%60);

                       s=parseInt(总秒数%60);计算当前秒数

 

function countDown(time) {
            var nowTime = +new Date; //返回的是当前时间总的毫秒数
            var inputTime = +new Date(time); //返回的 是用户输入事件总的
            var times = (inputTime - nowTime) / 1000; //time是剩余时间总的秒数
            var  d = parseInt(times / 60 / 60 / 24);

                   
            var h = parseInt(times / 60 / 60 % 24);

                   
            var m = parseInt(times / 60 % 60);

                   
            var s = parseInt(times % 60);
            return d + '天' + h + '时' + m + '分' + s + '秒';

        }
        console.log(countDown('2020-11-11 24:00:00'));  //调用记得按字符串形式写

数组对象:

  var arr1=new Array();//创建了一个空的数组
       var arr1=new Array(2);//这里的 2表示Array的长度为2
       var arr1=new Array(2,3);//这里的2,3表示数组里面存入了2,3,这样写表示里面有两个数组元素

检测是否为数组的两种方式:

1.instanceof方法

var arr = [];
        var obj = {};
        console.log(arr instanceof Array);
        console.log(obj instanceof Array);//instanceof方法 用来检测是不是数组

2.Array.isArray(参数);H5新增的方法,ie9以上才支持

var arr = [];
        var obj = {};

        console.log(Array.isArray(arr));  //true
        console.log(Array.isArray(obj));   //false

 添加数组元素:

 

 

数组前面增加新的数组:

var arr = [1, 2, 3, 4, 5];
        arr.unshift(4); //把4添加到数组的 开头,并且返回新的长度
        
        console.log(arr);

 删除数组的元素:

  var arr = [1, 2, 3, 4, 5];
        arr.shift(); //删除数组第一个一个元素
        console.log(arr); //返回它删除的元素的值

 

var arr = [1, 2, 3, 4, 5];
        arr.pop();//删除数组最后一个元素
        console.log(arr);//返回它删除的元素的值

数组排序:

var arr = [1500, 1200, 2000, 2100, 1800];

        arr.sort();
        console.log(arr);

/*0: 1200
1: 1500
2: 1800
3: 2000
4: 2100*/

 sort重点:

 var arr = [1, 4, 71, 43, 54];

        arr.sort(function(a, b) {
            return a - b; //按照升序   如果是b-a则是降序
        });
        console.log(arr);

/*0: 1
1: 4
2: 43
3: 54
4: 71*/

数组索引方法:

 var arr = ['blue', 'green', 'red', 'pink'];
        console.log(arr.indexOf('red'));

 

  1. indexOf只返回第一个满足条件的所以好   lastindexOf返回最后一个满足条件的
  2. 如果在该数组里面找不到元素,则返回的是-1

案例:数组去重(重点案例)

核心:

  1. 把旧数组里面不重复的元素选出来放到新数组中,重复的元素只保留一个,放到新数组中去重
  2. 遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素存在,则不添加,如果不存在则添加
  3. 我们怎么知道元素有没有存在?利用新数组indexOf(数组元素),如果返回时为-1,则说明新宿组里面没有该元素
 var arr = ['a', 'c', 'h', 'j', 'c', 't', 'b', 'a'];
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (newArr.indexOf(arr[i]) == -1) {
                newArr.push(arr[i]);
            }
        }
        console.log(newArr);

数组转换为字符串:

 var arr = [1, 2, 3];
        console.log(arr.toString());
var arr = ['green', 'blue', 'pink'];
        console.log(arr.join('|'));

//green|blue|pink

课下查询:   splice()   数组删除splice从第几个开始,要删除个数,返回被删除项目的新数组,注意这个会影响原数组

基本包装类型:

  1. 把简单数据类型包装成复杂数据类型
  2. 把临时变量的值给str
  3. 销毁这个临时变量     可以特殊引用的数据类型:String 和Number和  Boolean

这样基本数据类型就有了属性和方法

字符串的不可变性:

  1. 因为字符串的不可变所以不要大量的拼接字符串
  2. 字符串的不可变性指的是里面的值不可变,虽然看上去可以改变内容,但是其实是地址变了,内存中开辟了一个新的空间

根据字符串返回位置:

字符串所有的方法,都不会修改字符串本身,操作完成会返回一个新的字符串

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值