
javascript高级程序设计
文章平均质量分 69
初心鸿鹄
物有本末,事有终始,知所先后,则近道矣!
展开
-
javascript的征程之面向对象编程
javascript中的对象和传统意义上的对象有所不同,前者包含的没有类的概念,因此这里的面向对象编程(oop)也就不一样了创建对象:一般常用的是字面量的方法和构造函数的方法,但是这样有一个缺点就是一个接口可以创建很多个对象,这就造成了代码的冗余为了解决这个问题--工厂模式工厂模式说白了就是通过封装一个函数来创建对象(return出对象),但是这样做的缺点很明显就是不知道对象的类型。原创 2017-06-26 19:35:49 · 438 阅读 · 0 评论 -
javascript中的循环
do-while语句:var i= 0;do{ i++;}while(i<10) console.log(i) do-while语句至少执行一次,为啥?因为他是先执行逻辑代码后判断,这就意味着第一次循环无论条件是否成立。都已经执行了一次逻辑代码,当条件成立的时候接着循环,条件不成立那就跳出循环,常用于至少执行一次的循环中while语句var j = 0;while(j<10)原创 2018-01-04 12:59:27 · 373 阅读 · 0 评论 -
javascript的征程--date(日期)对象
日期对象,既然是对象,那么他就是一个引用类型的变量了,那么他还有其他的什么特性呢?如果要创造一个date对象就要用到 Date()的构造函数:var date = new Date(参数),参数可以是表示日期的字符串,也可以是表示具体时间的时间戳;获取当前时间的时间戳:Date.now()返回的是调用这个方法的时间的时间戳(ie9+),对于ie9以下的浏览器可通过 +号操作符把date原创 2017-05-08 21:37:47 · 427 阅读 · 0 评论 -
javaScript高级程序设计--正则
正则表达式通常用来匹配一个字符串,返回true(至少匹配到了一次)或者false(一次也没匹配到)。正则表达式分为字面量方式和构造函数的方式var reg = /[abs]/g; //字面量var reg5 = new RegExp("[sbs]jjj", "g");//全局匹配sjjj或者bjjj;字面量形式转换为构造函数的正则要注意的事项:var reg5 = new Reg原创 2018-01-23 09:06:36 · 272 阅读 · 0 评论 -
call和apply的那些事儿
call 与 apply 是什么call 方法应用于 Function 对象。语法为call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 参数解释`thisObj`可选项。将被用作当前对象的对象。`arg1, arg2, , argN`可选项。将被传递方法参数序列转载 2017-05-27 13:43:05 · 469 阅读 · 0 评论 -
一个小函数引起的思考
var a = [];for(var i = 0;i<10;i++){ a[i] = function(){ console.log(i) } a[0]()//0,1,2,3,4,5,6,7,8,9;console.log(a[i])}a[0]()//10console.log(a[i])你会发现,打印出来的全部是function(){console.log(i)},也就是说在原创 2017-07-18 22:24:32 · 411 阅读 · 0 评论 -
javascript 的征程---字符串的那些事儿
javascript中字符串其中有很多种方法,来实现对字符串各种各样的操作,以下仅仅是列举一些常用的方法:charAt():方法以单字符字符串的形式返回给定位置的那个字符串,如果是负值返回空;charCodeAt() :方法返回的是指定位置下的字符所对应的ASII码;concat():方法用来拼接字符串(可以是多个字符串,用“,”隔开),其实这个不常用一般而言用字符串拼接用+号即可;原创 2017-06-15 16:18:10 · 381 阅读 · 0 评论 -
javaScript高级程序设计--数组
这里主要介绍一些数组的常用方法:arr.isArray():用来检测一个对象是否是数组。var arr = [2, 4, 6, 3];arr[arr.length] = 12;console.log(Array.isArray(arr));Array.join():传入一个分隔符,返回由当前数组中的每一项的字符串形式拼接,并被分隔符分割的字符串;不操作原数组。var arr = [原创 2018-01-17 13:09:17 · 360 阅读 · 0 评论 -
函数function(未完待续)
js中的每一个函数都是 Function类型的实例(new Function()),也就是说函数是一个对象(引用类型),函数名其实包含着的是指向当前函数的指针(你懂的)。定义函数的方法:声明式和表达式的方法// 定义函数的方法:声明式function getSum(num1){ return num1+10}// 表达式的方式var getSum1 = function(num1){ ...原创 2018-02-06 12:36:40 · 352 阅读 · 0 评论 -
javascript高级程序设计--单体内置对象
global:单体内置对象;encodeURL(url):对url进行编码,事实上只会对url中的空格进行编码(%20),其他的都不会变,与之对应的是decodeURL(),换句话说只能反解析%20;encodeURLComponent(url):也是对url进行编码,与encodeURL(url)的区别是:encodeURL(url)只会对url中的空格进行编码,而后者是对url中所有的原创 2018-04-18 12:59:35 · 319 阅读 · 0 评论 -
javaScript高级程序设计--对象
对象 1.定义:就是无序属性的集合,其属性可以包含基本值、对象或者函数。 2.用法:字面量的形式创建对象,说白了就是“{}”。 3.对象中的属性,分为两种:数据属性和访问器属性; 3.1 数据属性:这种属性会有对应的值(可以认为就是我们常见的对象的属性),该属性的特性(如是否可以修改值,是否可以删除等等),分别是:configurable(是否可以删除属性等,默认true),enumerable(...原创 2018-04-23 18:00:01 · 317 阅读 · 0 评论 -
javascript高级程序设计之--自运行函数
什么是自运行函数?顾名思义.就是不用调用,自己自动就会执行的函数;为什么要用自运行函数?自运行函数内部是一个独立的作用域,这样就保持了一个相对独立的命名空间,避免污染全局作用域怎么创建自运行函数?写法一:(function(param){…})(re—param);写法二:(function(param){…}(re-param));非主流写法:在函数体前使用“+”,“原创 2018-04-25 16:46:49 · 530 阅读 · 0 评论 -
javascript高级程序设计--创建对象的那些事儿
了解完了对象,也了解了常用的创建对象的方式--构造函数式和字面量式,那么除此自外,还有哪些创建对象的方式呢?工厂模式说白了就是一个封装函数,在函数内部定义对象的细节,最后返回之 function createObj(name,job,age){ var obj = new Object(); obj.name = name; ...原创 2018-04-24 12:50:04 · 406 阅读 · 0 评论 -
javaScript高级程序设计--变量和参数的那些事,垃圾回收机制
函数的形参和实参的个数没有必然的联系,因为函数接收到的永远是一个数组,可以用arguments对象表示这个数组,arguments是一个类似数组的对象,其长度由传入的参数的个数决定的;例如:function hehe(ele1,ele2){ return arguments[0]}//就是ele1JS中的变量js中的变量的值分为两种,一种是包含着基本类型值的变量(5种,因为在内原创 2018-01-09 13:06:01 · 296 阅读 · 0 评论 -
Javscript高级程序设计之-Chapter3总结
1.变量名采用驼峰命名法(以字母、下划线、$开头);js的严格模式,浏览器引擎解析更加严格,杜绝不规范的操作行为,激活方式如下(默认是不激活的):1. js文件整体用严格模式:在文件头部添加"use strict"; 2.在函数体内,只需要在函数体内添加"use strict";原创 2017-12-20 12:40:32 · 370 阅读 · 0 评论 -
javascript中的 变量,作用域和内存
变量是:值类型:null,undefined,boolean,number,string是值类型,在内存中有固定的大小,值保存在栈空间(内存)中;引用类型:对象,数组,函数;由于大小不固定,但是地址是固定的,所以值保存在堆空间中,地址保存在栈空间(内存)中;“引用”其实是一个指针,指向的是对象的地址;也就是说,在赋值的时候,如果是值类型,变量保存的是值,如果值是引用类型,变量保存的原创 2017-11-10 13:48:01 · 294 阅读 · 0 评论 -
javascript的征程五--数组
注:这里主要记录的是自己以前不知道的知识数组的length属性不是只读的,也就意味着通过设置这个属性来向数组中添加某一项或者删除某一项,例如: var arr = ["从前","有一个","小孩","他"]; arr.length = 3; console.log(arr)//删除:["从前", "有一个", "小孩"]; arr[arr.length] = "回家的路原创 2017-04-25 22:46:32 · 344 阅读 · 0 评论 -
javascript的征程五--变量、作用域、内存
在javascript中,对于一个变量,这个变量所包含的值可能是基本类型的值也可能是引用类型的值,不同的值的类型,操作也就有所差别(基本类型就是那五种数据类型,不包括obj,对于引用类型的就是保存在内存中的对象,简而言之,变量所包含的值是一个对象);复制变量时:当你复制变量的值给另一个变量的时候,如果说该变量的值是基本类型,那么两个变量是相互独立的,互相不影响,因为相当于把一个变量的值复制原创 2017-04-05 20:23:27 · 379 阅读 · 0 评论 -
javascript的征程四--函数
ECMAScript 函数的参数与大多数其他语言中函数的参数有所不同。ECMAScript 函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。也就是说,即便你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数,之所以会这样,原因是 ECMAScript 中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包原创 2017-04-04 13:45:22 · 417 阅读 · 0 评论 -
javascript的征程三--js的基本概念
js中变量的命名规则:可以是数字,字母,下划线,美元符号,但第一个必须是字母,下划线,美元符号,采用驼峰命名法比较合适;js中的严格模式(待详细了解):严格模式是为 JavaScript 定义了一种不同的解析与执行模型。在严格模式下,ECMAScript 3 中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误,在一定程度上提高了编译器的效,那么要在整个脚本中启用严格模式,可原创 2017-04-03 11:22:12 · 486 阅读 · 0 评论 -
javascript之闭包的理解
闭包,就是能够访问其他函数内部变量的函数,这是阮前辈说的,具体的可以查看其写的博客:学习javascript闭包,里面已经说的很清楚了。在这里主要说明的是在阮前辈的博客中留下的问题:var name = "The Window"; var object = { name : "My Object", getNameFunc : function(原创 2017-09-26 17:55:51 · 354 阅读 · 0 评论 -
javascript之面向对象编程续
原型方法来解决构造函数所不能解决的问题;每一个函数都有一个prototype原型属性,这个属性是一个指针,指向一个对象,这个对象的用途是让所有构造函数的实例共享他所包含的属性和方法,为啥说他是共享的呢?无论何时,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个 prototype属性,这个属性指向函数的原型对象。在默认情况下,所有原型对象都会自动获得一个constructo原创 2017-07-03 17:46:38 · 381 阅读 · 0 评论 -
javascript的征程五---特殊的引用类型Bollean、Number、String
基本包装类型:Boolean,Number,String 明明是三种基本类型,为什么说是基本包装类型的呢? 这是因为一旦在访问这三种类型的变量的时候,js引擎会自动为你在后台创建这三种对应的基本包装对象实例, 然后执行一系列的操作,之后将该实例立即销毁(这个过程很短暂,只存在执行访问变量的那一行代码瞬间)引用类型与基本包装类型的主要区别就是对象的生存期。使用new操作符创建的引用类型的实例(是一个...原创 2017-06-12 16:36:01 · 680 阅读 · 0 评论 -
javascript的征程 --Function函数
在这里主要说一下自己以前不理解的地方,以便参考:其实对于一个函数而言,其定义方式有两种:一种是函数表达式的方式 例如: var fun = function(){.....},一种是函数声明就类似于这种:function fun(){......}。虽然两者的基本功能一样,但是还是有区别的,主要体现在浏览器引擎上的识别问题:对于前者如果调用在前而定义的表达式在后就会报错,但是对于后者(原创 2017-05-26 22:18:50 · 341 阅读 · 0 评论 -
正则表达式中的那些事儿
概述正则表达式(regular expression)是一种表达文本模式(即字符串结构)的方法,有点像字符串的模板,常常用作按照“给定模式”匹配文本的工具。比如,正则表达式给出一个Email地址的模式,然后用它来确定一个字符串是否为Email地址。JavaScript的正则表达式体系是参照Perl 5建立的。新建正则表达式有两种方法。一种是使用字面量,以斜杠表示开始和结束。转载 2017-05-24 17:36:44 · 1365 阅读 · 0 评论 -
正则的那些事儿(未完待续)
正则表达式可以认为是表达文本模式的方法,你也可以认为他是字符串的结构化的模板。通常情况下,正则有两种写法:一种是字面量的形式,一种是构造函数的形式。 var reg = /adf/i; var reg = new RegExp("adf", "i");不过两者功能一样,但是两者还是有区别的,字面量形式的表达式,当你在定义的时候新建的表达式,而后者是在运行的时候新建的表达式(毕原创 2017-05-24 15:20:46 · 372 阅读 · 0 评论 -
javaScript的征程一-关于对javascript的基本理解
javascript与ECMAScript的关系javaScript和ECMAScript(以下简称ECScript)并不是相等的,准确的说javascript是包含ECMAScript的,一个完整的javaScript实现应该包含三个部分:ECMAScript(js的核心),文本对象模型(DOM),浏览器对象模型(BOM)。关于ECMAScript由 ECMA-262 定义的 ECM原创 2017-04-01 12:32:45 · 707 阅读 · 0 评论 -
javascript的征程二--html中的javascript
问题一:javascript的引用方式有几种?有两种,分别是嵌入式和外部引入式,对于外部引入式,它引入的位置在哪里呢,一般而言是在body标签的底部,因为如果在head标签中引入script的外部文件,当script比较大的时候,整个页面就会有一段时间式空白的,如果这样的话,对用户体验就不好,这是因为浏览器在解析html'文档的时候式从上往下一次解析的;问题二:是不是在引入script标签原创 2017-04-02 10:53:25 · 637 阅读 · 0 评论 -
javascript高级程序设计之---继承
对象的继承 1.继承的思想:关键是将一个构造函数A的原型指向给另一个构造函数B的实例本身,那么A实例将拥有(继承)B实例的所有的属性和方法(继承在原型); 2.原理:将一个构造函数A的原型指向给另一个构造函数B的实例本身,也就意味着A原型将继承B实例本身拥有的所有的属性和方法;而对于A实例而言,A原型对象中的所有的属性和方法是A实例所共享的,也就是说A实例所共享的实例和方法就是B实例本身所拥有的...原创 2018-04-28 17:11:09 · 417 阅读 · 0 评论