JavScript学习笔记二
标准对象
Date#
- 获取本机当前时间
var now = new Date(); now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST) now.getFullYear(); // 2015, 年份 now.getMonth(); // 5, 月份,注意月份范围是0~11,5表示六月 now.getDate(); // 24, 表示24号 now.getDay(); // 3, 表示星期三 now.getHours(); // 19, 24小时制 now.getMinutes(); // 49, 分钟 now.getSeconds(); // 22, 秒 now.getMilliseconds(); // 875, 毫秒数 now.getTime(); // 1435146562875, 以number形式表示的时间戳
- 创建一个指定日期和时间的Date对象
var d = new Date(2015, 5, 19, 20, 15, 30, 123); d; // Fri Jun 19 2015 20:15:30 GMT+0800 (CST)
- 解析一个符合ISO 8601格式的字符串,返回时间戳
var d = Date.parse('2015-06-24T19:49:22.875+08:00'); d; // 1435146562875
- 时间戳转Date
var d = new Date(1435146562875); d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST) d.getMonth(); // 5
RegExp#
- 匹配字符 (大写的取反)
\d
:一个数字 [0-9]\w
:一个数字或字母及下划线 [a-zA-Z0-9_]\s
:一个空白字符 [<空格>\t\r\n\f\v]
- 匹配数量
*
:匹配一个字符串 0-无限 次+
:匹配一个字符串 1-无限 次?
:匹配一个字符串 0-1 次{n}
:匹配一个字符串 n 次{n,m}
:匹配一个字符串 n-m 次
- 匹配边界
^
:匹配输入字符串的开始位置。$
:匹配输入字符串的结束位置。
- RegExp写法
var re1 = /ABC\-001/; var re2 = new RegExp('ABC\\-001'); re1; // /ABC\-001/ re2; // /ABC\-001/
- test方法用于测试给定的字符串是否符合条件
JSON#
-
序列化 把对象序列化成json字符串
JSON.stringify(Object obj, Array fliter, String str)
- obj : 需要序列化的对象
- fileter: 需要被序列化的属性
var xiaoming = { name: '小明', age: 14, gender: true, height: 1.65, grade: null, 'middle-school': '\"W3C\" Middle School', skills: ['JavaScript', 'Java', 'Python', 'Lisp'] }; var s =JSON.stringify(xiaoming);//{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}
-
toJSON()
定义一个toJSON()的方法,直接返回JSON应该序列化的数据var xiaoming = { name: '小明', age: 14, gender: true, height: 1.65, grade: null, 'middle-school': '\"W3C\" Middle School', skills: ['JavaScript', 'Java', 'Python', 'Lisp'], toJSON: function () { return { // 只输出name和age,并且改变了key: 'Name': this.name, 'Age': this.age }; } }; JSON.stringify(xiaoming); // '{"Name":"小明","Age":14}'
-
反序列化
JSON.parse()
JSON.parse('[1,2,3,true]'); // [1, 2, 3, true] JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14} JSON.parse('true'); // true JSON.parse('123.45'); // 123.45
JSON.parse()还可以接收一个函数,用来转换解析出的属性:
var obj = JSON.parse('[1,2,3,true]', function (key, value) { if (key === '1') { return value + '同学'; } return value; }); console.log(JSON.stringify(obj)); // {name: '小明同学', age: 14}
面向对象#
- 创建对象
- 直接创建对象
var xiaoming = { name: '小明', age: 14 }
- 普通函数作构造函数创建
//定义一个函数 function Student(name){ this.name = name; this.hello = function(){ return `Hello ${this.name}`; } } var xiaoming = new Student("xiaoming");
- 共享的方法
//定义一个函数 function Student(name){ this.name = name; /*this.hello = function(){ return `Hello ${this.name}!`; }//每个对象中都有一份这个函数 */ } //绑定在prototype中,每个对象只有一份,共享的方法 Student.prototype.hello = function(){ return `Hello ${this.name}!`; } var xiaoming = new Student("xiaoming");
- 原型继承
学习资料 - class继承
新的关键字class从ES6开始正式被引入到JavaScript中- 定义类:
注意没有function关键字class Student { constructor(name) { this.name = name; } hello() { alert('Hello, ' + this.name + '!'); } }
这样就避免了Student.prototype.hello = function () {...}这样分散的代码。- 继承
class PrimaryStudent extends Student { constructor(name, grade) { super(name); // 记得用super调用父类的构造方法! this.grade = grade; } myGrade() { alert('I am at grade ' + this.grade); } }
- in运算符
in
返回一个布尔值,表示一个对象是具有某个属性'length' in Date // true 'toString' in Date // true
in
通常和for
一起用for(item in items){ }
异步操作#
分类:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律