![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JS基础知识整理
文章平均质量分 51
diligentkong
分享是最好的学习方式!
展开
-
闭包
闭包(closure)是Javascript语言的特色,很多高级应用都要依靠闭包实现。作为一个初学者,还是用最通俗易懂的语言解释一下闭包吧。 在讲闭包之前,先看个小例子。 例1:<script> var a = "我是全局变量"; function fun(){ var b = "我是局部变量"; console.log(b); c原创 2017-02-16 19:32:04 · 504 阅读 · 1 评论 -
JavaScript原型和闭包之---构造函数、原型与对象三者之间的关系(扩充constructor)(五)
通过前面的博客:构造函数、原型、prototype与__proto__我们已经了解:构造函数有个prototype属性可以访问原型对象,构造函数可以实例化对象,实例化的对象有个非标准的proto属性,对象可以通过proto访问原型。在默认情况下,所有的原型对象都会自动获得一个constructor(构造函数)属性,指向对应的构造函数也就是Person.prototype.constructo原创 2017-07-27 10:40:26 · 1141 阅读 · 0 评论 -
JavaScript原型和闭包之---prototype与__proto__的关系(四)
回忆复习: 前面我们将构造函数、原型的时候,说过在构造函数创建出来的时候,系统会默认的帮构造函数创建并关联一个对象,这个对象就是原型。 构造函数也是函数,通常用来初始化对象。原型对象中的属性和方法可以被构造函数实例化的对象访问。构造函数.prototype可以访问原型构造函数实例化的对象.__proto__也可以访问原型 那么现在这里就说明一下prototype与.__proto__原创 2017-07-25 21:58:27 · 352 阅读 · 0 评论 -
JavaScript原型和闭包之---原型(三)
什么是原型《JavaScript高级程序设计》中说: 创建的每个构造函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象。而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。简单的说:在构造函数创建出来的时候,系统会默认的帮构造函数创建并关联一个对象,这个对象就是原型。 原型对象中的属性和方法可以被构造函数实例化的对象访问。 创建一个Person构造函数 fun原创 2017-07-25 21:41:13 · 638 阅读 · 0 评论 -
JavaScript原型和闭包之---构造函数(二)
什么是构造函数呢?在javascript中,构造函数也是函数,通常用来初始化对象,并且和new关键字同时出现。 看例子:function Person(name,age,job){ this.name =name; this.age = age; this.job = job; this.sayName = function(){原创 2017-07-25 21:18:15 · 1298 阅读 · 0 评论 -
JavaScript原型和闭包之---为对象添加属性和方法以及in 、delete关键字(一)
对象的动态特性是指:在对象创建出来之后,为对象添加新的属性或者方法。给对象添加属性和方法有两种:点语法[]使用点语法给对象添加属性和方法 var obj = { name: "kong", age:23 } // 使用点语法 : 给obj对象添加属性和方法 obj.hobby = "runing"; o原创 2017-07-25 21:04:18 · 958 阅读 · 0 评论 -
javascript原型和闭包之---Function(六)
还记得声明函数的几种方法吗?直接声明函数function funcName(/*参数列表*/){ //函数体}函数表达式var funcName = function(){};Function 类型 new Functionvar func = new Function();Function可作为构造函数 可以用来新建函数对象Function构造函数的语法:一个参数都不传的情况 创原创 2017-07-27 17:35:54 · 443 阅读 · 0 评论 -
JavaScript中的变量
懂点编程的都知道,执行环境的类型总共只有两种:全局和局部var color ="blue";function changeColor() { var num =10; console.log(num);console.log(color);}changeColor();console.log(num);在这个例子中,color是全局变量,num是局部变量,color能被函原创 2017-05-23 15:22:38 · 387 阅读 · 0 评论 -
轻松搞定--作用域,变量、函数提升,作用域链
作用域:变量起作用的范围 作用域说明的是一个变量可以在什么地方被使用,什么地方不能使用。 我们要了解以下几个知识:1.块级作用域看例子:for(var i=0; i<10;i++){ var num = i;}console.log(i); //10console.log(num); //9 上面这段代码在JavaScript中是不会报错的,但是在其他的编程语言中原创 2017-08-07 12:17:50 · 1135 阅读 · 4 评论 -
javascript原型和闭包之------闭包
在说闭包之前,先回忆之前我们了解的javascript中的变量和作用域链。上一篇博客《轻松搞定–作用域,变量、函数提升,作用域链》http://blog.csdn.net/diligentkong/article/details/76832038 变量的作用域有两种:全局变量和局部变量。当某个函数被调用时,会创建一个执行环境及相应的作用域链。 每个执行环境都可以向上搜索作用域链,以查询变量和函数原创 2017-08-12 12:58:11 · 509 阅读 · 0 评论 -
javascript原型和闭包之------原型链 (七)
什么是原型链? 前面几篇博客讲解了JS中的构造函数,原型,prototype与__proto__,以及构造函数、原型与实例三者之间的关系,Function,其实这些知识都是为原型链做准备的。通过这几篇博客,我们知道: (1)每个构造函数都有一个原型对象(构造函数.prototyoe) (2)每个原型对象包含一个指向构造函数的指针(构造函数.prototype.constr原创 2017-07-27 17:46:49 · 825 阅读 · 0 评论 -
JavaScript中的值类型与引用类型
值类型值类型的数据:存储的是数据本身的变量。值类型(基本数据类型)包括number、boolean、string、undefined、null。 值类型的数据在内存中占有固定大小的空间,它是存储在栈(stack)中的简单数据,也就是说,值类型的值直接存储在变量访问的位置。 值类型的数据在内存中的存储如下: 引用类型引用类型的数据:存储的是数据在内存中的地址,数据在内存中单独存储。引用类型包括:原创 2017-07-25 20:44:00 · 767 阅读 · 1 评论 -
JavaScript中this、apply()、call()的用法及解释示例
说到javascript中的this不得不提及javascript中函数调用的四种模式,即函数调用模式对象的方法调用模式构造函数调用模式上下文调用模式因为不同的函数调用模式,this的指向时不同的。现在一一来看四种调用模式。1.函数调用模式: function test(){ console.log(this);//window }原创 2017-08-08 20:40:41 · 3620 阅读 · 2 评论 -
javascript变量知识小梳理
1.变量Javasctript对变量的定义并不需要声明变量的类型,通过赋值的形式,将各种类型的数据赋值给同一个变量。 a=100;//Number类型 a="honey";//String类型 a={name:jake};//Object类型 a=[1,2,3];//Array类型 2.变量的命名规则!(1).变量命名必须以字母或是下标符号”_”或者”$”为开头。 (2).变量名长度不原创 2017-01-24 20:02:09 · 407 阅读 · 0 评论 -
JavaScript parseInt() 函数
修改 js 代码中 parseInt 的调用方式,使之通过全部测试用例 输入例子: parse2Int(‘12’); parse2Int(‘12px’); parse2Int(‘0x12’) 输出例子: 12; 12; 0function parse2Int(num) { return parseInt(num,10);}parseInt() 函数可解原创 2017-05-11 20:22:03 · 1070 阅读 · 0 评论 -
JS中的正则表达式(一)
正则表达式的定义正则表达式是具有特殊语法的字符串,用来表示制定字符或字符串在另一个字符串中出现的情况。可以实现很多功能如验证手机号码、验证日期、验证银行卡号等。定义: (1) 对象定义法 即使用RegExp构造函数进行定义 var reg1 = new RegExp(“表达式”); var reg1 = new RegExp(“表达式”,“i”); // 第二个参数表述匹配时不区分大小写原创 2017-05-12 12:38:43 · 805 阅读 · 0 评论 -
正则表达式(二)验证邮箱、电话号码
正则表达式的常用例子: E-Mail地址 和手机号码、固定电话号码验证e-mail邮箱地址有效的电子邮箱地址基本格式是一串字符(由字母、数字、下划线 、短线“-”、点号“.”组成),紧跟着@符号,最后还有一些字符。 我们都知道在@之前至少有一个字符,其后必须至少有三个字符,这三个字符中第二个还必须是一个点. (a@a.b是有效地址 而a@a 和a@a.都是无效的) @前后的文本必须符合同样的规原创 2017-05-12 15:03:20 · 5013 阅读 · 0 评论 -
JS中的数组
一、数组的声明及遍历1.数组的声明var a=[1,"a","zer0",9];var b = new Array(1,"a",3);console.log(a);//[1,"a","zer0",9]console.log(b);//[1,"a",3]2.数组的遍历var arr = new Array(1,"a",3);for (var i =0;i< arr.length;i++) {原创 2017-05-06 16:27:40 · 345 阅读 · 0 评论 -
JS找出数组 arr 中重复出现过的元素
这是牛客网的题目,自己总结了几种其他人做的方法,供自己借鉴。 JS找出数组 arr 中重复出现过的元素 输入例子:duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()输出例子:[1, 3, 4]1.这个应该好理解。 先对数组进行排序,判断前一个与后一个相等且没有保存的情况下,再把元素放到数组中去。function duplicates(arr) {原创 2017-05-09 12:52:30 · 15611 阅读 · 4 评论 -
JS中setTimeOut()和setInterval()定时器用法
setTimeOut()和setInterval()都是用来处理延时和定时任务的函数,比如打开一个网页之后过段时间就会弹出一个对话框或登录框,再或者页面每隔一段时间执行一个函数。 setTimeOut()只执行一次,且是在指定的毫秒数之后再调用函数。 setInterval()可以执行多次,是在每隔指定的毫秒数循环调用函数,直到clearInterval把它清除掉。 var timer=set原创 2017-05-09 19:41:50 · 2947 阅读 · 0 评论 -
数组的5中迭代方法 filter()、map()、forEach()、every()、 some()
先来看个牛客网上的题目吧,在数组 arr 中,查找值与 item 相等的元素出现的所有位置 输入例子:findAllOccurrences('abcdefabc'.split(''), 'a').sort()输出例子:[0, 6]有的大牛是这样子做的的。function findAllOccurrences(arr, target) { var temp = []; arr.原创 2017-05-10 15:19:00 · 1229 阅读 · 1 评论 -
getBoundingClientRect() 的用法
getBoundingClientRect()方法用来获取页面中某个元素的左、上、右、下分别相对浏览器视窗的位置,返回的是一个矩形对象,包括四个属性,分别是left 、top、right、bottom。分别表示元素各边与页面上边和左边的距离。 来看个例子:<style> *{ margin: 0; padding: 0;原创 2017-07-30 21:12:25 · 8452 阅读 · 1 评论 -
事件冒泡、事件捕获与事件委托
事件流:描述的是从页面中接收事件的顺序。IE和Netscape开发团队居然提出了差不多是相反的事件流的概念。 IE的事件流是事件冒泡流 Netscape的事件流是事件捕获流。事件冒泡事件冒泡(event bubbling),即事件开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。 举个例子:原创 2017-11-28 12:14:11 · 987 阅读 · 0 评论