Date - 日期的对象,在JS中通过Date对象来表示一个时间 - 创建一个当前的时间对象 var d = new Date(); - 创建一个指定的时间对象 var d = new Date("8/12/2020 23:40:50"); - 方法: getDate() - 当前日期对象是几日(1-31) getDay() - 返回当前日期对象时周几(0-6) - 0 表示周日.1表示周一... getMonth() - 返回当前日期对象的月份(0-11) - 0 表示一月.1表示二…
对象 对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性.除了那5种基本数据类型,就是对象. 分类:1.内建对象- 由ES标准中定义的对象,在任何的ES的实现中都可以使用- 比如:Math String Number Boolean Function Object.... 2.宿主对象- 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象- 比如 BOM DOM 3.自定义对象- 由开发人员自己创建的对象…
这个系列博客主要用来记录本人学习JavaScript的笔记,从0开始,即使有些知识我也是知道的.但是会经常忘记,干脆就写成博客,没事的时候翻来看一看,留下一点学习的痕迹也好.可能写博客的水平暂时不太好,但是慢慢来吧! 想要走前端开发的路,JavaScript是最核心的内容,必须熟练掌握,尽量不要急于求成,把一些东西理解得比较透彻再去接触像vue之类的一些框架,不然学了也等于白学.好,废话不多说,直接开始JavaScript的学习. 首先JavaScript是解释型语言,和Java语言不一样,不需…
Math - Math属于一个工具类,它不需要我们创建对象(例如Date日期对象需要通过构造函数创建对象 var 变量=new Date(),Math不需要),它里边封装了属性运算相关的常量和方法 我们可以直接使用它来进行数学运算相关的操作 - 方法: Math.PI - 常量,圆周率 Math.abs() - 绝对值运算 Math.ceil() - 向上取整 Math.floor() - 向下取整 Math.round() - 四舍五入取整 Math.random() - 生成一个0-1之间的…
原型(prototype) - 创建一个函数(所有函数)以后,解析器都会默认在函数中添加一个属性prototype prototype属性指向的是一个对象,这个对象我们称为原型对象. 创建一个函数MyClass(). function MyClass(){} - 当该函数作为构造函数使用,它所创建的对象中都会有一个隐含的属性指向该原型对象. 这个隐含的属性可以通过对象.__proto__来访问.如果这个函数是个普通函数,那么prototype属性也没什么作用. 调用构造函数,创建一个对象. va…
-强制类型转换为String 1.方式1 调用被转换数据的toString()方法 number类型值.布尔类型值.都可以调用toString()方法强制转换.但是null值和undefined值不行,这两个类型的值没有toString()方法. 补充一下toString方法的知识,其实还可以当一个简单的进制转换器,因为是初学阶段,所以对于这个方法的学习后续再继续补充. 十进制装换为其他进制. .toString(2)表示转换为2进制 .toString(8)表示转换为8进制 .toString…
JavaScript中有6种数据类型 一.基本数据类型 - String 字符串 JS中的字符串需要使用引号引起来双引号或单引号都行 但是要注意的是某种引号嵌套使用的话,需要加上 \ 转义.比如说我们要输出一句话. var str="面试官问我:"你在学校最有价值的经历是什么?"" 这样使用引号是会报错的. 报错原因:你在学校最有价值的经历是什么?这一句首先没有被引号括起来,被识别为标识符,并且是非法的. var str="面试官问我:\"你在学…
JavaScript代码一般编写在哪里呢? 看到这个问题,第一个反应就是,JavaScript那当然是编写在<Script></Script>这对标签中啊!然而! 1.可以编写到标签的指定属性中 <button onclick="alert('写在onclik属性中');">按钮</button> <a href="javascript:alert('写在href属性中');">超链接</a>…
正则表达式的使用 先说RegExp对象的一个方法 test() - 使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false. 1.用正则表达式来检查一个字符串中是否含有字母a var reg = new RegExp("a"); var s="abcdef"; console.log(reg.test(s)); 创建了一个RegExp对象reg,匹配规则是含有字母a,匹配模式没写,然后创建一个字符串s,reg调用方法t…
RegExp 对象 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 创建 RegExp 对象的语法(构造函数方式): pattern:正则表达式,attributes:匹配模式 var reg=new RegExp(pattern, attributes); 直接量语法(字面量方式):类似于var obj={}:var arr=[]. var reg=/pattern/attributes…
String对象 在底层,字符串是以数组的形式保存的.比如说一个字符串"String"以["H","t","r","i","n","g"]形式保存.所以Sting对象有个属性length,可以获取字符串(对象)的长度.其实这个对象加不加都可以,因为字符串变量也会经过包装可以使用String对象的属性和方法. charAt()- 根据索引获取指定的字符 charCode…
包装类 - 在JS中为我们提供了三个包装类: String() Boolean() Number() - 通过这三个包装类可以创建基本数据类型的对象 例子: var num = new Number(2); var str = new String("hello"); var bool = new Boolean(true); - 但是在实际应用中千万不要这么干,为什么?因为会出现问题啊! bool是一个对象,转换为boolean值永远都是true. 那这个包装类有什么作用呢? 思考一…
arguments (封装实参的对象) 在调用函数时,浏览器每次都会传递进两个隐含的参数:1.函数的上下文对象 this2.封装实参的对象 arguments- arguments是一个类数组对象,它也可以通过索引来操作数据,也可以获取长度- 在调用函数时,我们所传递的实参都会在arguments中保存 - arguments.length可以用来获取实参的长度 - 我们即使不定义形参,也可以通过arguments来使用实参, - arguments对象里边有一个属性叫做callee,这个属性对…
数组去重 var arr = [1,2,3,2,2,1,3,4,2,5]; //去除数组中重复的数字 //获取数组中的每一个元素 for(var i=0 ; i<arr.length ; i++){ //console.log(arr[i]); /*获取当前元素后的所有元素*/ for(var j=i+1 ; j<arr.length ; j++){ //console.log("---->"+arr[j]); //判断两个元素的值是否相等 if(arr[i] ==…
遍历数组 - 遍历数组就是将数组中元素都获取到 - 一般情况我们都是使用for循环来遍历数组: - 使用forEach()方法来遍历数组(不兼容IE8) forEach()方法需要一个回调函数(由我们创建,但是不由我们调用的函数)作为参数,数组中有几个元素,回调函数就会被调用几次,如下图输出了7次. 每次调用时,都会将遍历到的信息以实参的形式传递进来,我们可以定义形参来获取这些信息. 先给回调函数定义三个形参,函数被调用时,浏览器会传递三个实参进来. a:正在遍历的元素 b:正在遍历元素的索引,…
数组的一些方法 - push() - 用来向数组的末尾添加一个或多个元素,并返回数组新的长度 - 语法:数组.push(元素1,元素2,元素N) - pop() - 用来删除数组的最后一个元素,并返回被删除的元素 - unshift() - 向数组的前边添加一个或多个元素,并返回数组的新的长度 - shift() - 删除数组的前边的一个元素,并返回被删除的元素 - slice() - 可以从一个数组中截取指定的元素 - 该方法不会影响原数组,而是将截取到的内容封装为一个新的数组并返回 - 参数…
数组 - 数组也是一个对象,是一个用来存储数据的对象,和Object类似,但是它的存储效率比普通对象要高. - 数组中保存的内容我们称为元素 - 数组使用索引(index)来操作元素 - 索引指由0开始的整数 - 数组的操作: - 创建数组 var arr = new Array(); var arr = []; - 向数组中添加元素 - 语法: 数组对象[索引] = 值; arr[0] = 123; arr[1] = "hello"; - 创建数组时直接添加元素 - 语法: var…
构造函数 - 构造函数是专门用来创建对象的函数 创建一个对象时,通过构造函数的方式来创建.这是通过Object()这个构造函数来创建的一个实例obj. var obj=new Object(); - 一个构造函数我们也可以称为一个类 想要创建一个人的类 function Person(){ } - 构造函数就是一个普通的函数,只是他的调用方式不同, 如果直接调用,它就是一个普通函数. Person(); 如果使用new来调用,则它就是一个构造函数,通过构造函数Person创建了一个per实例.…
this(上下文对象) - 我们每次调用函数时,解析器都会将一个上下文对象作为隐含的参数传递进函数. 使用this来引用上下文对象,根据函数的调用形式不同,this代表的对象也不同.不同的情况: 1.以函数的形式调用时,this是window对象 2.以方法的形式调用时,this就是调用方法的对象 3.以构造函数的形式调用时,this就是新创建的对象 4.使用call()和apply()调用时,this是指定的那个对象 call()和apply()- 这两个方法都是函数对象的方法,需要通过函数对…
变量的提前声明(全局作用域) - 我们知道js的代码是自上而下执行的.如下,console.log(a)在var a=10前面,但是结果输出的是undefined. - 使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值):也就是说在执行代码之前凡是var 声明的变量都已经是存在了,就已经是在栈内存中了. - 但是如果声明变量时不适用var关键字,则变量不会被声明提前,会报错. 函数的提前声明(全局作用域) - 创建一个函数有3中方式,其中函数声明方式和上边var 声明变量是…
作用域 - 作用域指一个变量的作用的范围 - 在JS中一共有两种作用域 1.全局作用域 - 直接编写在script标签中的JS代码,都在全局作用域- 全局作用域在页面打开时创建,在页面关闭时销毁 - 在全局作用域中有一个全局对象window,它代表的是一个浏览器的窗口,它由浏览器创建我们可以直接使用. - 在全局作用域中:创建的变量都会作为window对象的属性保存 创建的函数都会作为window对象的方法保存,这里有没有想起alert()方法 - 全局作用域中的变量都是全局变量,在页面的任意的…
方法 - 听了不少调用什么什么方法,所以方法究竟是啥东西? - 如果一个函数作为一个对象的属性保存,那么我们称这个函数时这个对象的方法,调用这个函数就说调用对象的方法(method). 创建一个对象 var obj = new Object(); 添加属性 obj.name = "maoweizhao"; obj["age"] = ; 对象的属性值可以是任何的数据类型,所以保存函数. obj.sayName = function(){ console.log(obj…
匿名函数 - 用函数声明的方式创建一个函数时,不加函数名称. function sum(){ console.log("我是函数sum")} - 不加名称,这样写浏览器是会报错的. function(){ console.log("这是一个匿名函数")} - 正确写法,在外面加(),浏览器不会报错,但是要如何执行? ( function(){ console.log("这是一个匿名函数"); }) - 在后面再加()就运行了,代码运行到那块了,执…
数的形参(形式参数) - 定义函数时,可以在()中定义一个或多个形参,形参之间使用英文逗号隔开:定义形参就相当于在函数内声明了对应的变量但是并不赋值,形参会在调用时才赋值. 函数的实参(实际参数) - 调用函数时,可以在()传递实参,传递的实参会赋值给对应的形参. - 调用函数时JS解析器不会检查实参的类型和个数. 如果实参的数量大于形参,多余实参将不会赋值 如果实参的数量小于形参,则没有对应实参的形参将会赋值undefined,如下a的值为1,形参b没有实参值为undefined:a+b结果为…
函数(Function) - 函数也是一个对象,也具有普通对象的功能 - 函数中可以封装一些代码,在需要的时候可以去调用函数来执行这些代码:当调用函数时,函数中封装的代码会按照顺序执行. - 使用typeof检查一个函数时会返回function - 创建函数有三种方式 1.通过构造函数方式:实际开发中基本不用 var fun = new Function("console.log('Hello 这是我的第一个函数');"); 2.函数声明方式 function 函数名([形参1,形参2…
栈内存 - JS中的变量都是保存到栈内存中的,- 基本数据类型的值直接在栈内存中存储,- 值与值之间是独立存在,修改一个变量不会影响其他的变量 堆内存 - 对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,- 而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,- 当一个通过一个变量修改属性时,另一个也会受到影响.注意是修改对象属性,修改变量值是不会影响另一个.例如obj2=null;只是这个变量obj2的值不再是堆内存地址的值,obj变量…
对象的基本操作 - 创建对象 - 方式一:使用new关键字调用的函数,是构造函数(constructor),构造函数是专门用来创建对象的函数. var obj = new Object(); - 方式二: var obj = {}; - 添加属性 - 属性名:对象的属性名没有任何要求,不需要遵守标识符的规范,但是还是尽量按照标识符规范去写. - 属性值:可以任意的数据类型. - 方式一:在对象中保存的值称为属性.语法:对象.属性名 = 属性值; obj.name = "mao"; ob…
break关键字 -break关键字可以用来退出switch或循环语句 -不能在if语句中使用break和continue,但不是说if语句里面不能写break关键字,break关键字一定要包含在switch或循环语句中. 正确的: for(var i= ; i< ; i++){ console.log(i); if(i == ){ break; } } 错误的: if(i == ){ break; } -break关键字,默认会立即终止离他最近的那个循环语句 例如下面的这段代码,默认是会退出内…
for循环 - 语法: for(①初始化表达式 ; ②条件表达式 ; ④更新表达式){ ③语句... } - 执行流程: 首先执行①初始化表达式,初始化一个变量,(这里只会执行一次) 然后对②条件表达式进行求值判断,如果为false则终止循环 如果判断结果为true,则执行③循环体 循环体执行完毕,执行④更新表达式,对变量进行更新. 更新表达式执行完毕重复②…
循环语句 - while循环 - 语法: while(条件表达式){ 语句... } - 执行流程: while语句在执行时,会先对条件表达式进行求值判断, 如果判断结果为false,则终止循环 如果判断结果为true,则执行循环体 循环体执行完毕,继续对条件表达式进行求值判断,依此类推 - do...while循环 - 语法: do{ 语句... }while(条件表达式) - 执行流程 do...while在执行时,会先执行do后的循环体,然后在对条件表达式进行判断, 如果判断判断结果为fa…