举个栗子 // 假设当前时间是2019年12月22日0点20分 new Date('2019-12-22').getTime() < new Date().getTime() // 上面的结果是什么?...探究 那么为什么默认是8点呢?有没有觉得8这个数字很值得关注,我们所在的时区是东八区,如果以GMT标准0点来算的话,在那个时间点,这里就是8点啊。...那么为什么js会对不同分割的时间字符串进行不同处理呢?貌似是因为-分隔且具有前导0的日期字符串,会被解析成ISO格式的字符串,以GMT时区为基准,不过我也没看懂。...动手解决: /** * 将时间字符串转换成date对象 * @param dateStr * 时间字符串 */ function getDate(dateStr){ /* 若日期是使用-...分割的,全部转换成/ 因为只有日期时,js会将-分割的字符串基准时区设置为GMT,与当前时区相差8小时 */ dateStr = dateStr.replace(/-/g
答案:通过一个对象的__proto__可以找到它的原型对象,原型对象也是一个对象,就可以通过原型对象的__proto__,最后找到了我们的 Object. prototype, 从实例的原型对象开始一直到...Object. prototype 就是我们的原型链 [参与互动](https://github.com/yisainan/web-interview/issues/180)
还原事故现场: 接口返回的数据中,有个时间戳字符串,我拿到之后用 new Date() 实例化时间对象,结果控制台提示:Invalid Date 后来自己试了下,发现时间戳的格式需要是数字,才不会报错,...所以转日期的时候加了个类型转换就ok了 let timestamp = "1515239514230" new Date(timestamp); // Invalid Date new Date(...Number(timestamp)); // Sat Jan 06 2018 19:51:54 GMT+0800 (中国标准时间) 首发自:JS new Date() 报错 Invalid Date
() 返回 Date 对象的毫秒 (0 ~ 999):getMilliseconds() var date1 = new Date(); var date2 = new...Date(1590749870077); var date3 = new Date('2020-5-29 18:54:10'); var date4 = new Date(2020,....getMonth() var date7 = date4.getDate() var date8 = date4.getHours() var date9 = date4.getMinutes...10 800 console.log(date5, date6 + 1, date7, date8, date9, date10, date11); 常用方法 返回 1970...11:40:23 GMT new Date() var date = new Date() //当前时间 console.log(date); var date1 = new
函数本质上是Object类型,也就是一个对象。...值得注意的是typeof (null)会返回Object,这是因为JS二进制前三位都为0的话会被判断为Object类型,null的二进制表示是全0,自然前三位也是0,所以执行typeof时会返回Object...new Student(); console.log(stu1.from) // sdust console.log(stu2.from) // sdust __proto__ __proto__ 是原型链查询中实际用到的...原型链可以简单理解为将原型连成一条链,js每一次获取对象中的属性都是一次查询过程,如果在自有属性中找不到就会去原型对象中查找,如果原型对象中还查不到,就回去原型对象的原型中查找,也就是按照原型链查找,...直到查找到原型链的顶端,也就是Object的原型。
__proto__ === Person.prototype); // true constructor 每个原型prototype 都有一个 constructor(构造函数)属性,这个属性(是一个指针...Object 与 Function的关系 Object 是 函数, 因为函数在 Function 中, 所以Object是Function的实例对象. 因此就构成一个三角形。...Object可以使用__proto__来访问对象的原型对象,即Object可通过__proto__访问Function的Function.prototype 原型继承的整个关系( 原型链 ) 可以知道所有的对象都有原型..., 一步一步往上走, 都会汇集到 Object.prototype ,Object.prototype 是顶级的对象。...__proto__ === Object.prototype); // true 应用 继承 看我这篇文章:js实现继承 增删查改 function Person() { } // 增 Person.prototype.name
DOCTYPE html> Date对象 <style type="text/css...border: 4px solid #4169E1; } var myDate = new <em>Date</em>...myDate.getFullYear(); document.write('更改后的年份:' + num2); } function day() { var mydate = new <em>Date</em>...分钟,一分钟<em>是</em>60秒,一秒又等于1000毫秒。...分钟,一分钟<em>是</em>60秒,一秒又等于1000毫秒。
Js中Date对象 JavaScript的Date对象是用于处理日期和时间的全局对象,Date对象基于Unix Time Stamp,即自1970年1月1日UTC起经过的毫秒数。...此外创建一个新Date对象的唯一方法是通过new操作符,若将它作为常规函数调用,即不加new操作符,将返回一个字符串,而非Date对象。...// 如果你在中国北京,你的起始时间是1970年01月01日08时00分00秒。 // 以相同日期时间来算,北京地区的时间戳在量上是少的。...// 在不同的时区同时运行Date.now(),返回的时间戳是相同的,时间戳是不带有时区信息的。...minutesValue: 表示要设置的分钟数,是一个介于0和59之间的整数。
JS进阶:原型与原型链 image.png JavaScript中除了基础数据类型外都是对象(引用类型)。...在上面的代码中,有两个实例被创建,它们有自己的名字、颜色,但它们的bark方法是一样的,而通过构造函数创建实例的时候,每创建一个实例,都需要重新创建这个方法,再把它添加到新的实例中。...实际上,构造函数的prototype属性与它创建的实例对象的[[prototype]]属性指向的是同一个对象,即 对象.__proto__ === 函数.prototype 。...这里dog2重写bark方法并没有对dog1造成影响,因为它重写bark方法的操作实际上是为自己添加了一个新的方法使原型中的bark方法被覆盖了,而并非直接修改了原型中的方法。...Objec.prototype指向的原型对象同样拥有原型,不过它的原型是null,而null则没有原型。
为什么需要原型 在js中万物皆对象,对象可以说是重中之重了。每一个对象都拥有自己的属性。但是在这个世界中有很多东西都是相似的,可以归为一类,他们有共同的方法和属性。不可能让每一个对象都定义一个属性吧。...所以,在js中怎么才能让多个对象共享一个或多个方法呢?原型的出现就是为了解决这个问题。...原型对象有一个constructor属性,默认指向对应的构造函数。 什么是原型链 根据字面意思我们可以这样理解,就是将原型连成一条链。...我们上面讲过,js每一次获取对象中的属性都是一次查询过程,如果在自有属性中找不到就会去原型对象中查找,如果原型对象中还查不到,就回去原型对象的原型中查找,也就是按照原型链查找,直到查找到原型链的顶端,也就是...在js中,对象都有__proto__属性,一般这个是被称为隐式的原型,该隐式原型指向构造该对象的构造函数的原型。
js原型、原型链 这几天闲了看了下js的原型,以下内容为个人理解,如有错误,尽请指正。...首先,明确一点:js中的对象分为普通对象和函数对象,一般我们自定义的可以被new的函数称作函数对象,另外js内置了譬如:Array、Date、Object、Function、Number、String、...__proto__ === Object.prototype) // true, Person的原型是由Object构造的,因为Person.prototype是一个普通对象,普通对象的构造都是Object...__proto__ console.log(Date.__proto__ === Function.prototype) // true, Date是由Function构造的,类似Person....__proto__ === null) // true, Object的原型是由null"产生"的,null处于原型链顶端 这个从根本上印证了道德经那句:道(null)生一,一生二,二生三,三生万物
基础用法 上面提到Date 是一个构造函数,所以创建日期对象,需要 new Date(): 获取系统当前时间(不含参数): let date = new Date(); console.log(date...日期格式化 从上面我们可以看出,上面的日期格式对我们来说并不友好,我们当然想看到的是2022-2-27 10:30:30 这种格式,那怎样才能得到这种格式呢?...(2022, 2, 27, 10, 12, 22);我们月份传入的是2,2 就对应着 3月,所以得到了错误的月份Sun Mar 27 2022 10:12:22 GMT+0800 (中国标准时间)。...// 简单使用 let date = new Date(); // 获取年份 date.getFullYear(); // 2022 //获取月份 date.getMonth() + 1; // 2...: let date = new Date(); date.valueOf(); // 1645930442365 date.getTime(); // 1645930442365 console.log
大家好,又见面了,我是你们的朋友全栈君。...js Date 使用详解 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份...var mytime=myDate.toLocaleTimeString(); //获取当前时间 myDate.toLocaleString( ); //获取日期与时间 京东商城里面的到计时用的就是js...的Date对象由于日期函数太多不能一一讲解,有兴趣的同学可以上新编程的官网去查看 Date 对象属性 属性 描述 constructor 返回对创建此对象的 Date 函数的引用。...Date 对象方法 方法 描述 Date() 返回当日的日期和时间。 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
前言 本文主要是根据《head first javascript程序设计》摘抄学习而成,学习采用这本书主要是一位阿里大佬的建议,经过近期的学习阅读,发现确实比其他的js书籍能更好的理解和使用js的相关知识...之所以出现这样的问题,是因为我们没有充分利用好js的对象模型,其是基于原型的概念的。 原型是什么 js可以从其他对象那里继承属性和行为,更具体的说js使用原型继承。其中其行为继承的对象称为原型对象。...这个是指,会继承原型对象的属性(包括属性方法),同时在新对象中添加属性。 那么如果我们要定义一个小狗的原型,其对象图是什么样的呢?...this是指向原型对象的,同样我们也很好理解在没有原型的时候,this调用指向的是对象本身,但是你在调用原型原型的方法时你可能认为this指向的是原型对象,其实并非如此。...所以其准确的解释是在任何情况下,this指向的都是原始对象,即方法被调用的对象,在原型中也是如此。
JS 原型链 1. 原型和原型链的基础结论 1.1 函数与对象的关系 函数是对象,对象都是通过函数创建的。 函数与对象并不是简单的包含与被包含的关系。...1.2 原型的类别 显示原型:prototype,是每个函数function独有的属性。 隐式原型: __proto__,是每个对象都具有的属性。...1.3 原型和原型链 原型:一个函数可以看成一个类,原型是所有类都有的一个属性,原型的作用就是给这个类的一个对象都添加一个统一的方法。..., chrome的引擎通过__proto__向外暴露了这个属性。...[[Prototype]] 符号是用于指向 someObject 的原型。
Person("ruben",21); console.log(ruben.toString()) 打印结果为: (ruben,21) 我们可以使用Person.prototype去获取Person的原型对象...this.age + '}'; } console.log(ruben.toString()) 修改后结果为: Person{name='ruben', age=21} 打印一下原型对象呢
显示原型 1.每一个构造函数都有一个prototype属性,默认指向一个空Object对象(原型对象) function fun(){ } console.log(fun.prototype ) //{...) //true 5.构造函数与它的原型对象有一个相互引用的关系 6.原型对象上添加的方法用于实例对象上使用 隐式原型 每一个实例对象都有一个__proto__属性,称之为隐式原型 对象的隐式原型的值为其对应构造函数的显示原型的值...__proto__) Fn.prototype.test = function(){ console.log('test') } fn.test() 原型链 对象属性的查找规则 原型链本质上是从隐式原型链...test2,发现有直接调用test2 当执行fn.toString(),时,自身对象没有,接下来查找它构造函数的原型对象上是否有toString(),发现没有,接下来又继续沿着Fn原型对象的构造函数的原型对象上查找找到...toString() 当执行fn.test3()时,查找自身对象没有,它直接的构造函数对象的原型对象上也没有,接下来沿着Fn原型对象的构造函数的原型对象的构造函数的原型对象上查找,这里已经找到原型链的尽头
prototype就是调用构造函数所创建的实例对象的原型(proto)。js在创建对象的时候,都有一个叫做proto的属性,用于指向它的函数对象的原型对象prototype。...原型链 每一个对象都可以有一个原型,这可原型还可以有它自己的原型,以此类推,就形成了原型链。...查找一个对象的属性或方法的时候,如果这个对象中没有这个属性或者方法,那就会在这个对象的原型对象中去找,以此类推,直到原型链结束。..._proto_ _proto_是原型链查询中实际用到的,指向构造函数的原型对象,他是对象独有的。对象._proto_ = 构造函数.prototype。 在js中,万物皆是对象,函数也是对象。...3、构造函数的prototype指向原型对象,原型对象的constructor指向构造函数。 使用 prototype最主要的用法就是将属性暴露成公用的。
讲原型的时候,我们应该先要记住以下几个要点,这几个要点是理解原型的关键: 1、所有的引用类型(数组、函数、对象)可以自由扩展属性(除null以外)。...而通过原型来实现的话,只需要在构造函数里面给属性赋值,而把方法写在Foo.prototype属性(这个属性是唯一的)里面。...首先,fn的构造函数是Foo()。...._ proto _=== Foo.prototype 又因为Foo.prototype是一个普通的对象,它的构造函数是Object,所以: Foo.prototype._ proto _===...所以当fn调用toString()时,JS发现fn中没有这个方法,于是它就去Foo.prototype中去找,发现还是没有这个方法,然后就去Object.prototype中去找,找到了,就调用Object.prototype
Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。也就是说 数组是对象、函数是对象、正则是对象、对象还是对象。...Number、String、Boolean、Array、Object、Function、Date、RegExp、Error这些都是函数,而且是原生构造函数,在运行时会自动出现在执行环境中。...在上面内容的基础之上,我们来模拟一下js引擎读取对象属性:function getProperty(obj, propName) { // 在对象本身查找 if (obj.hasOwnProperty...其实它表示的是一种原型链继承的关系。2. Object.create之前说对象的创建方式主要有两种,一种是new操作符后跟函数调用,另一种是字面量表示法。...如果构造函数返回对象类型Object(包含Functoin, Array, Date, RegExg, Error等),则正常返回,否则返回这个新的对象。
领取专属 10元无门槛券
手把手带您无忧上云