var方法

Javascript初识之数据类型

守給你的承諾、 提交于 2019-12-24 08:29:37
一、JavaScript概述 1、ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。 次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。 二是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。 因此ECMAScript是JavaScript的规格,JavaScript是ECMAScript的一种实现,在日常场合,这两个词是可以互换的。 javascript遵守ECMA指定的标准,换句话说javascript就是ECMAscript的方言。 2、ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009

jQuery升级踩坑大全

寵の児 提交于 2019-12-24 07:18:21
背景   jQuery想必各个web工程师都再熟悉不过了,不过现如今很多网站还采用了很古老的jQuery版本。其实如果早期版本使用不当,可能会有DOMXSS漏洞,非常建议升级到jQuery 1.9.x或以上版本。前段时间我就主导了这件事情,把公司里我们组负责的项目jQuery版本从1.4.2升级到了jQuery 1.11.3。jQuery官方也为类似升级工作提供了jQuery Migrate插件。   言归正传。   坑从何处来   jQuery 1.11.3是1.x时代的最后一个版本(作者更新:2016年1月8日,jQuery 1.12.0上线,jQuery 1.11.3不再是1.x时代最后一个版本了),由于我的部门项目已经有一定年头了,当时还是采用的jQuery 1.4.2,这次升级步子迈得算是比较大。早期时候jQuery的很多写法,在新版本中已经被废弃,亦或者有些不规范的写法,当时版本还能支持,但是现在已经不支持。更糟糕的情况是,新版本还支持,但是功能已经和以前不一样了……这种情况连个错都不会报,需要深入到代码逻辑里面去看。   jQuery官方推荐了jQuery Migrate 库来解决jQuery升级问题。不过一直采用这个库终究不是长久之计,开发中建议使用jQuery Migrate的开发版,可以在浏览器控制台上打印出来不兼容的地方详细信息

js常用时间方法

流过昼夜 提交于 2019-12-24 03:22:11
//获取一段时间日期 YYYY-MM-DD function getDays ( dayNum ) {    var oDate = new Date();    //获取当前时间    var dayArr = new Array();    for( var i = 0; i < dayNum; i ++) {      var str = new Date(oDate.getFullYear(), oDate.getMonth(), oDate.getDate() + i);     dayArr.push(gmtToDate(str));   //把未来几天的时间放到数组里,通过 gmtToDate(str)转换    }    return dayArr;      //返回一个数组。 } //GMT返回YYYY-MM-DD function gmtToDate ( str ) {    var date = str;    var seperator1 = "-";    var year = date .getFullYear();    var month = date .getMonth() + 1;    var strDate = date .getDate();    if(month >= 1 && month <= 9) {     month = "0

浅析 JavaScript 中的 函数 uncurrying 反柯里化

穿精又带淫゛_ 提交于 2019-12-23 17:18:05
柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果。 因此柯里化的过程是逐步传参,逐步缩小函数的适用范围,逐步求解的过程。 请见我的另一篇博客· 浅析 JavaScript 中的 函数 currying 柯里化 反柯里化 相反,反柯里化的作用在与扩大函数的适用性,使本来作为特定对象所拥有的功能的函数可以被任意对象所用. 即把如下给定的函数签名, obj.func(arg1, arg2) 转化成一个函数形式,签名如下: func(obj, arg1, arg2) 这就是 反柯里化的形式化描述。 当然是有个前提的,函数 y 需要语言上支持鸭子类型, 引自维基 在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的。...在使用鸭子类型的语言中,这样的一个函数可以接受一个任意类型的对象,并调用它的走和叫方法... 例如,下面的一个简单实现: Function.prototype.uncurrying = function() { var that = this; return function() { return Function.prototype.call.apply(that, arguments); } }; function sayHi () {

js常见面试题

和自甴很熟 提交于 2019-12-23 00:05:14
1. javascript的typeof返回哪些数据类型. 答案:string,boolean,number,undefined,function,object 2. 例举3种强制类型转换和2种隐式类型转换? 答案:强制(parseInt,parseFloat,number) 隐式(== ===) 3. split() join() 的区别 答案:前者是将字符串切割成数组的形式,后者是将数组转换成字符串 4. 数组方法pop() push() unshift() shift() 答案:push()尾部添加 pop()尾部删除 unshift()头部添加 shift()头部删除 5. IE和标准下有哪些兼容性的写法 答案: var ev = ev || window.event document.documentElement.clientWidth || document.body.clientWidth Var target = ev.srcElement||ev.target 6. ajax请求的时候get 和post方式的区别 答案: 一个在url后面 ,一个放在虚拟载体里面 get有大小限制(只能提交少量参数) 安全问题 应用不同 ,请求数据和提交数据 7. call和apply的区别 答案: Object.call(this,obj1,obj2,obj3) Object

JS 创建长度为100的数组,数值为角标

白昼怎懂夜的黑 提交于 2019-12-22 08:12:17
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script language="javascript" type="text/javascript"> //实现方法一:循环赋值 var arr1 = new Array(100); for(var i=0;i<arr1.length;i++){ arr1[i] = i; } console.log(arr1); //实现方法二:push方法实现 var arr2 = new Array(); for(var i=0;i<100;i++){ arr2.push(i); } console.log(arr2); //实现方法三:while var arr3 = new Array(); var i = 0; while(i<100){ arr3.push(i); i++; } console.log

JQuery原理介绍及学习方法

我是研究僧i 提交于 2019-12-22 05:20:20
前言 对于JQuery,想必大家都很熟悉。目前,很多web项目,在实施的过程中,考虑到各浏览器原生JS API的兼容性,大都会选用JQuery或类似于JQuery这样的框架来进行网页效果开发。JQuery上手简单,也很容易学,即使是刚接触JQuery的开发人员,借助JQuery手册,也很快能在项目中使用开发。 虽然JQuery相对简单,但要全面掌握,且快速灵活的使用它也并不那么容易,它提供了很多方法,包含了网页开发的各个知识面,所以要全面掌握这些知识点,个人认为还是需要对jquery有深入的理解,对这些知识点做分类整理记忆,这样你才能面对一些JQuery代码的时候不会感到迷惑,才会知道采用何种方式实现某个特效是最佳实践,才能快速的采用JQuery来进行项目开发。 简单模拟JQuery JQuery里的代码是出了名的刁钻,里面的奇技淫巧太多太多,如果你想通过源码来学习JQuery,没有一定的功底是很难做到的。所以下面写一个非常简单的库来模拟JQuery,方便大家理解。 总体代码 (function(window) { var doc = window.document; // -------------代码段二 ------------------ var JQuery = function(selector) { return new JClass(selector); } //

数组排序

独自空忆成欢 提交于 2019-12-22 00:48:43
使用reverse()方法可以点到数组元素的顺序,该方法是在原数组基础上进行操作的,不会新创建数组。 实例:    <script> var a=[1,3,5,7,8,6]; alert(a.reverse()); </script> sort()方法能够对于数组中的元素进行排序,排序的方法通过其参数来决定,这个参数是一个比较两个元素之的闭包。如果省略 则sort()方法将默认的规则对数组进行排序。    <script> var a=[1,3,5,7,8,6]; function f(a,b){ return b-a; } var b=a.sort(); alert(b); //返回135678 var c=a.sort(f); alert(c); //返回8765321 </script> 来源: https://www.cnblogs.com/xiaowie/p/10860779.html

深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP

我们两清 提交于 2019-12-21 09:38:08
前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第2篇,开闭原则OCP(The Open/Closed Principle )。 开闭原则的描述是: Software entities (classes, modules, functions, etc.) should be open for extension but closed for modification.软件实体(类,模块,方法等等)应当对扩展开放,对修改关闭,即软件实体应当在不修改的前提下扩展。 open for extension(对扩展开放)的意思是说当新需求出现的时候,可以通过扩展现有模型达到目的。而Close for modification(对修改关闭)的意思是说不允许对该实体做任何修改,说白了,就是这些需要执行多样行为的实体应该设计成不需要修改就可以实现各种的变化,坚持开闭原则有利于用最少的代码进行项目维护。 英文原文:http://freshbrewedcode.com/derekgreer/2011/12/19/solid-javascript-the-openclosed-principle/ 问题代码 为了直观地描述,我们来举个例子演示一下,下属代码是动态展示question列表的代码(没有使用开闭原则)。 // 问题类型var AnswerType = {

数组的常用方法(详解)

拟墨画扇 提交于 2019-12-21 09:06:49
数组常用方法 1. arrayObject.shift(); 无参数,删除数组的第一项,返回删除项,原数组改变。 //例如 var arr = [1,2,3]; arr.shift(); //返回结果为[1],原数组为[2,3] 2. arrayObject.unshift(num1[,num2...]); 将元素插入到数组的起始位置,返回新数组的长度,原数组改变。 //例如 var arr = [1,2,3]; arr.unshift(4,5); //返回结果为5,原数组为[4,5,1,2,3] 3. arrayObject.pop(); 无参数,删除数组的最后项,返回删除项,原数组改变。 var arr = [1,2,3]; arr.pop(); //返回结果为[3],原数组为[1,2] 4. arrayObject.push(num1[,num2...]); 插入到数组的末尾,返回新数组的长度,原数组改变。 var arr = [1,2,3,9]; arr.push(7,8); //返回结果为6,原数组为[1,2,3,9,7,8] 5. arrayObject.splice(index,length[,num1,num2...]); index参数必选,从索引index处删除length个(若length不传,则从index处删除至末尾),用num1,num2..