美文网首页
Javascript Date对象

Javascript Date对象

作者: JacobMa1996 | 来源:发表于2018-01-27 11:30 被阅读0次

前言

任何语言的Date类型都有自己的一套实现方法,JS中内置引用类型Date类型,特点很多,可以做一个记录。

继承Date

参考这个

//参考实现

// 需要考虑polyfill情况
    Object.setPrototypeOf = Object.setPrototypeOf ||
        function (obj, proto) {
            obj.__proto__ = proto;

            return obj;
        };

    /**
     * 用了点技巧的继承,实际上返回的是Date对象
     */
    function MyDate() {
        // bind属于Function.prototype,接收的参数是:object, param1, params2...
        var dateInst = new (Function.prototype.bind.apply(Date, [Date].concat(Array.prototype.slice.call(arguments))))();

        // 更改原型指向,否则无法调用MyDate原型上的方法
        // ES6方案中,这里就是[[prototype]]这个隐式原型对象,在没有标准以前就是__proto__
        Object.setPrototypeOf(dateInst, MyDate.prototype);

        dateInst.abc = 1;

        return dateInst;
    }

    // 原型重新指回Date,否则根本无法算是继承
    Object.setPrototypeOf(MyDate.prototype, Date.prototype);

    MyDate.prototype.format = function () { //箭头函数在操作this,arguments和new时,避免使用
        let y = this.getFullYear(),
            mon = this.getMonth() + 1,
            d = this.getDate(),
            h = this.getHours(),
            min = this.getMinutes(),
            s = this.getSeconds();
        mon = mon > 9 ? mon : '0' + mon;
        d = d > 9 ? d : '0' + d;
        h = h > 9 ? h : '0' + h;
        min = min > 9 ? min : '0' + min;
        s = s > 9 ? s : '0' + s;
        return y + '-' + mon + '-' + d + ' ' + h + ':' + min + ':' + s;
    }

    let date = new MyDate(1995, 11, 17, 3, 24, 0);
    console.log(date.format()); // 1995-12-17 03:24:00

ES6不经过Babel打包的继承:

class MyDate extends Date {
    constructor() {
        super();
        this.abc = 1;
    }
    getTest() {
        return this.getTime();
    }
}

let date = new MyDate();

// 正常输出,譬如1515638988725
console.log(date.getTest());

ES6继承类似Date类型的方法和ES5黑魔法继承的方式一样,只不过前者是在底层实现的,后者容易引起性能问题。

相关文章

  • ife每天笔记更新

    2018.5.18~5.20——JavaScript的Date对象JavaScript Date 对象主要掌握:D...

  • JavaScript ☞ day2

    JavaScript基础学习笔记之JavaScript提升 了解时间 Date Date对象的方法 Date对象间...

  • JavascriptDate

    JavaScript Date Date 对象 Date 对象用于处理日期与时间。 创建 Date 对象: new...

  • JavaScript Math对象和Date对象浅谈

    JavaScript Math对象和Date对象浅谈 Math 对象 JavaScript当中的Math对象是原...

  • 1 js对象

    1 JavaScript 对象JavaScript 提供多个内建对象,比如 String、Date、Array 等...

  • Date

    Date Date对象是JavaScript提供的日期和时间的操作接口 Date对象有几个静态方法 Date.no...

  • JavaScript Date 对象

    require(['jquery'], function($) { })

  • JavaScript Date 对象

    Date 对象用于处理日期和时间。 Date 对象会自动把当前日期和时间保存为其初始值。 Date 对象属性 Da...

  • Javascript Date对象

    前言 任何语言的Date类型都有自己的一套实现方法,JS中内置引用类型Date类型,特点很多,可以做一个记录。 继...

  • JavaScript Date对象

    1. Date 对象的创建 JavaScript 的时间是由世界标准时间(UTC)1970 年 1 月 1 日开始...

网友评论

      本文标题:Javascript Date对象

      本文链接:https://www.haomeiwen.com/subject/lusooxtx.html