javaScript--对象JSON方法

对象

this指向

this最终代表的是函数的执行者,最终指向一个对象。(决定this值的是调用方式。)

  1. 全局执行环境中的this指的是window。

    window对象是最顶层的对象,它对应的是全局执行环境。在全局中定义的变量和函数都是作为window对象的属性和方法。

    在JavaScript当中window对象有两个功能:

    1. window对象是最顶层的对象。
    2. window对象在BOM中是操作浏览器的接口。
  2. 如果函数是光秃秃(只是函数名进行调用前面没有任何东西)的,调用this指向的是window。

  3. 通过对象的方法调用,this指向这个对象。

apply、call方法

每个函数对象都有callapply这两个方法。

本质就是设置函数体内的this对象的值

格式:

  • call(thisArg,arg1,arg2)
  • apply(thisArg,[argsArray])

两者的工作方式完全相同,不同之处在于传递给调用函数的参数的传递形式。

作用:

  1. 借用其他函数的方法,让本对象使用。

    var obj = {
        name : 'sex',
        say:function(){
            console.log(this);
            console.log(this.name);
        }
    }  
    obj.say();   
    var obj1 = {
        name:'hello'
    } 
    obj.say.call(obj1);//{name:'hello'}
    
  2. 让其他构造函数中的属性变成自己的。

    function Demo(name){
        this.name = name;
    } 
    var obj = {sex:'nan',age:18};   
    // Demo.apply(obj,['wl']);
    Demo.call(obj,'wl');//执行Demo函数,Demo中的this指向了obj,那么当运行this.name时  就相当于obj.name了。  所以运行完成之后新增了属性。
    console.log(obj);
    
new运算符的流程

new运算符内部的执行过程。

过程:

  1. 创建一个对象,开辟内存空间(堆)
  2. 设置原型链
  3. this指向该内存(让函数内部的this指向对象。)
  4. 执行函数代码。
  5. 将创建的对象实例返回。
基本类型、引用类型判断类型
  • 基本数据类型判断:typeof

    1. undefined
    2. boolean
    3. string
    4. number
    5. object(null和对象)
    6. function(函数)
  • 其他的对象只能使用instanceof

    格式:对象 instanceof 类型

  • 判断是否是同一个对象(是不是同一个内存地址),使用==

    =是赋值、两个==是判断,是否等于(对于对象判断是不是同一个地址)、三个等于判断是不是全等于。

JSON

JSON是一个内置的对象,不用定义能够直接使用。

大写的JSON表示的是JS中的内置对象,小写的json表示的是一种数据格式。

  • json是一种数据格式,现在的前后端交互都是使用json数据格式。

  • json本质上是字符串,简称json串

    前端往后端传递数据时,要传json格式的数据。 后端返回给前端的数据也是json格式的数据。

json的值
  • 简单值:字符串、数字、布尔值、null。

    JavaScript和json字符串最大的区别在于json字符串必须使用__双引号__。

  • 对象:无序的键值对儿

    属性也是字符串 所以也得加上引号。

  • 数组:有序的键值对儿

    我们通常会将数组和对象结合起来使用,形成复杂的数据集合。

json数据处理
  • JSON.stringify(值),将JavaScript的值转换为json字符串(用来向后端发送数据时转换为json数据)。
    • JSON.stringify()输出的JSON字符串不包含空格和缩进。
    • 在进行转换时,对于JavaScript对象,所有的函数、原型成员的值,以及值为undefined的任何属性都会被忽略。
  • JSON.parse(值),将JSON字符串解析成为JavaScript值。(用来将从后端得到的数据转换为javascript代码)

Math

ECMAScript为数学计算提供了全局的内置对象,即Math对象。

  • 将小数转换为整数,如果是整数则不改变。

    • Math.ceil(),进一取整。
    • Math.floor(),舍一取整。
    • Math.round(),执行标准的四舍五入。
  • 进行数学计算

    • Math.min() ,获得最小值。
    • Math.max() ,获得最大值。
    • Math.abs(),求绝对值。
    • Math.pow(num,次方),进行幂运算。
    • Math.PI,圆周率,这是一个属性。
    • Math.random(),返回大于等于0小于1的一个随机数。
      案例:验证码
//验证码 随机的  3~4位的比较多。
//1. 所有的随机字符都是从这个字符串里面挑出来的。
var str = 'abcdefghjklmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789';
var code = '';
for (var i = 0; i < 4; i++) {
     code += str[Math.floor(Math.random() * (str.length - 1) + 0)];
}
console.log(code);

Date

Date是javaScript提供的构造函数。它用来处理日期、时间。

时间戳
  1. 是一个整数,用来计算的。
  2. 从1970年1月1日(计算机的元年)0点0分0秒~现在的毫秒数。
时间处理方法

Date既是函数(可运行的代码),又是对象(其中包含属性和方法)

Date.now(),获得当前的时间戳。

当做构造函数来使用:

格式:new Date()

new Date不写参数的话,直接获得当前的日期的对象。

传入参数需要获得指定日期的对象:

格式:new Date(年,月[,日[,时[,分[,秒]]]])([]中的代表选填值)

  • getFullYear(),获得4位的年份。
  • setFullYear(),设置年份(传入的值是4位的数字);
  • getMonth(),获得日期的月份。 返回日期中的月份,其中0表示一月,11表示12月份。
  • setMonth(),设置日期的月份。
  • getDate(),返回天数。(1~31)
  • setDate(),设置,如果超过了本月应有的天数那么增加月份。
  • getDay(),获得星期几(0表示星期日,6表示星期六);
  • getHours(),获得小时。
  • setHours(),设置小时,传入的值超过了23则增加天数。
  • getMinutes(),获得分钟数。
  • setMinutes(),设置分钟数。如果超过59增加小时
  • getSeconds(),返回秒数(0~59)
  • setSeconds(),设置秒数。如果超过59增加分钟数。
  • toLocatimeString(),获得时分秒
案例
  1. 获得当前的日期和时间,格式为:yyyy-mm-dd H:i:s
function formatDate(){
    //获得当前时间的对象。
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth();
    var day = date.getDate();
    var hour = date.getHours();
    var min = date.getMinutes();
    var seconds = date.getSeconds();
    //拼装字符串
    //:`yyyy-mm-dd H:i:s`
    return year + '-' + (month+1) + '-' + day + ' ' + hour + ':' + min + ':' + seconds; 
}
console.log(formatDate());

包装对象

实际上在JavaScript中提供了三个特殊的构造函数Number()String()Boolean()。可以通过new操作符来调用它们生成对应类型的对象。

var str = new String('abc');
console.log(str);

通过上面可以看出来,确实是个对象__proto__属性,指向了原型对象,原型对象中有大量的方法、属性。

根本不使用这三个构造函数。当把number、boolean、string类型当做对象调用的时候,它会自动的调用对应的构造函数生成一个对象。

var str = 'abc';//声明了一个字符串放在了str中。
//当执行str.length时 发现是对象调用,js内部自动调用new String('abc')创建一个包装对象。
//然后就可以使用属性、方法。当使用完成之后(本行  str.length),又会自动将包装对象转换为字符串。
console.log(str.length);
//这里打印还是基本类型
console.log(str);

number、boolean、string都会经过上面的这个过程。

普通对象和包装对象的区别:对象的生存周期。

  • 使用new操作符创建的引用类型的实例,在执行时候,当前作用域中会一直存在(存在于内存中)。
  • 自动创建的基本包装类型对象,只存在于一行代码的一瞬间,然后立即被销毁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值