javascript
lolichan
这个作者很懒,什么都没留下…
展开
-
js中的this关键字及call、apply、bind异同
this是javascript中的一个关键字this的使用分为两种情况①在构造函数中,当使用new得到一个新的对象时,this代表新建的对象②当this所在函数运行时,this代表调用者。其中像test()这样直接运行的函数它的调用者就是windows,还有call、apply、bind等一些特殊例子 call、apply、bind异同三者都是用于改变上下文环境的,即t...原创 2016-12-19 10:31:20 · 124 阅读 · 0 评论 -
js异步再看
之前有一篇《异步运行》,偶然写了一段代码对得到的结果不是很理解,重新查资料得到这篇文章。代码如下:<body> this is test <script> setTimeout(function(){ alert(100) },0); </script> <script type="text/jav...原创 2017-06-12 18:01:58 · 164 阅读 · 0 评论 -
AMD
AMD规范文档:https://github.com/amdjs/amdjs-api/wiki/AMD 异步模块定义(Asynchronous Module Definition AMD)API 详述了一种能够保证模块及其依赖能异步加载的定义模块机制。这特别适用于浏览器环境,该环境下模块的同步加载会导致性能,可用性,调试以及跨域访问等问题。这与科技公司AMD和它生产的处理器没有关系...原创 2017-06-13 15:37:32 · 240 阅读 · 0 评论 -
require.js使用教程
require.js API:http://requirejs.org/docs/api.html#config参考文档:http://www.tuicool.com/articles/bu6Zbirequire.js优点1.实现JS文件的异步加载,避免网页被堵塞2.管理模块之间的依赖性,便于代码的编写和维护 基本语法及使用1.引用require.js在页面头部...原创 2017-06-14 18:02:04 · 572 阅读 · 0 评论 -
弱类型对“||” 和 “&&”的处理
在javascript中数据类型可以分为“真值“和“假值”。顾名思义,真值转换为bool时值为true,假值转换为bool时值为false。常见数据转换为bool时的值: null falseundefined falseobject truefunction true0 false除0数字 true非...原创 2017-06-19 10:29:52 · 93 阅读 · 0 评论 -
this作为方法参数时指向的值
var test = { foo:function(){ (function(root){ console.log(root); }(this)) console.log(this); } } test.foo();//结果是:Object {foo: function} 一开始有点蒙逼,想了一会其实一句话就能说清楚,...原创 2017-07-14 11:21:32 · 663 阅读 · 0 评论 -
require.js中使用toString方法判断数据类型的分析
function isFunction(it) { return ostring.call(it) === '[object Function]'; }//ostring = Object.prototype.toString; 这是require.js中用于判断一个对象是否是方法的方法。。 这里就有一个疑问,为什么不直接 return it.toSt...原创 2017-07-14 17:06:44 · 229 阅读 · 0 评论 -
js修改onchange的值,display:none写法的影响
1.select的onchange自能对手动改变值做出反应,在js中改变select的值则无反应,可以用jquery的trigger('change')触发onchange事件2.div直接设置属性display:none在加载页面的时候,有可能一晃而过出现隐藏div的残影,如果用style="display:none"就没这个问题 ...原创 2017-07-20 17:49:35 · 893 阅读 · 0 评论 -
对象属性的特性
转自:http://www.cnblogs.com/yugege/p/4823863.html 1.ES5的属性特性包括下面六个:configurable: 表示能否通过delete来删除属性从而重新定义属性,能够修改属性的特性,默认为trueenumberable: 表示是否能通过for-in循环返回属性。默认为truewritable: 是否可以修改属性, 默认为tr...原创 2017-08-01 15:14:30 · 411 阅读 · 0 评论 -
get set 特性
get/set访问器不是对象的属性,而是属性的特性。请看《对象属性的特性一文》 这里着重介绍[[Get]]/[[Set]]就是我们所说的get/set访问器先说一个书上说的 get/set访问器行为特点:get/set访问器可以不用定义,不定义也可以读写属性值。也可以只定义一个。只定义get,则被描述的属性只可读,不可写。只定义set,则被描述的属性只可写,不可读。 要改变属...原创 2017-08-01 15:36:23 · 134 阅读 · 0 评论 -
display 和 visibility
display:none的作用是属性所属对象,不可见且不占空间。visibility:hidden的作用是属性所属对象,不可见,但是还占着茅坑 有一个区别,可以直接在html元素中写 display=‘none’,但是只能在visibility只能这么写style="visibility:hidden";,jquey可以通过$().css("visibility","visible"...原创 2017-08-02 17:18:47 · 78 阅读 · 0 评论 -
jquery对象的比较
$("div").each(function(index, domEle){ alert(domEle == this)//true alert($(domEle)==$(this));//false }); 这里我们用了jquery核心函数的jQuery(elements);我们传递一个element,然后产生一个jquery对...原创 2017-08-10 10:05:29 · 283 阅读 · 0 评论 -
typeof运算符
typeof是一个一元运算符,它返回的结果 始终是一个字符串,对不同的操作数,它返回不同的结果。具体的规则如下:一、对于数字类型的操作数而言, typeof 返回的值是 number。比如说:typeof(1),返回的值就是number。上面是举的常规数字,对于非常规的数字类型而言,其结果返回的也是number。比如typeof(NaN),NaN在JavaScript中代表的是特殊非数字值,虽然...原创 2017-08-10 15:44:27 · 455 阅读 · 0 评论 -
function对象的length属性 caja
function对象的length属性值等于函数形参个数:比如:function fun (a,b){}; fun.length == 2;具体调用时到底传入几个参数,可以在方法内用 arguments.length获得 看到一个不理解的单词caja,网络上的解释:JavaScript在web2.0时代已经成为越来越重要的一种脚本语言,但是JavaScript在浏览器里面的...原创 2017-08-11 17:30:43 · 178 阅读 · 0 评论 -
require.js的好处1
一个例子就能说明一大好处index.html<!DOCTYPE html><html> <head> <script type="text/javascript" src="a.js"></script> </head> <bo原创 2017-08-11 17:38:33 · 201 阅读 · 0 评论 -
regexp正则
正则表达式的基本语法如下2种:直接量语法: /pattern/attributes; 2. 创建RegExp对象的语法 new RegExp(pattern,attributes); \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。...原创 2017-08-11 17:44:01 · 146 阅读 · 0 评论 -
addEventListener和attachEvent
一般我们在JS中添加事件,是这样子的obj.onclick=method这种绑定事件的方式,兼容主流浏览器,但如果一个元素上添加多次同一事件呢?obj.onclick=method1;obj.onclick=method2;obj.onclick=method3;如果这样写,那么只有最后绑定的事件,这里是method3会被执行,这个时候我们就不能用onclick这样的写...原创 2017-08-17 14:46:05 · 114 阅读 · 0 评论 -
用javascript将require.js文件的注释和空行去掉
最近在看require.js源码,看的差不多就想把源码上的注释跟空行去掉,得到一个“纯净版”,然后再自己添加注释。首先用javascript读取文件,网上有人推荐用ActiveXObject对象,不过这是ie的(用的Chrome)。就将就用file框读取文件再用fileReader对象读取,文件内容代码如下<input type="file"id="files"name="f...原创 2017-08-18 15:00:56 · 487 阅读 · 0 评论 -
js代码位置对程序的影响
html文档是由浏览器从上到下依次加载的,javascript代码位置主要影响的是获取网页元素。如果你的代码中包含获取网页元素的代码例如document.getElementById(),那么你需要确保javascript代码要在你想要获取的元素的位置之后。如果在想要获取的元素之前调用这些代码,将无法获取该元素,例如:<script> document.getElement...原创 2017-06-09 17:26:11 · 221 阅读 · 0 评论 -
javascript参数
跟java相比javascript是一种很灵活(神经病)的语言不管一个函数定义时有多少个形参,实际调用时传入多少个参数都是可以的,本质上是在函数运行时,在执行上下文准备阶段初始化形参,在运行阶段将实参赋值给形参,实参不够的形参定义为undefined。而所有的实参又在arguments中保存,可以通过arguments[i]进行调用...原创 2017-06-07 18:05:49 · 104 阅读 · 0 评论 -
if(obj.length === +obj.length)
underscore源码里面这样写的原因是什么呢?上网找了一下几乎都是复制粘贴,讲的还有明显错误。在stackoverflow上找到一个觉得比较合理的答案:https://stackoverflow.com/questions/9188998/obj-length-obj-length-in-javascript (obj.length === +obj.length)效果其实等同...原创 2017-06-07 16:55:21 · 378 阅读 · 0 评论 -
异步运行
一、为什么js是单线程?所谓单线程,是指在js引擎中负责解释执行js代码的线程只有一个,不妨叫他主线程。但是实际上还存在其他的线程。例如:处理ajax请求的线程、处理DOM事件的线程、定时器线程、读写文件的线程等等。这些线程可能存在于js引擎之内,或之外。这里统称为工作线程js的单线程与它的用途有关。作为浏览器脚本语言,js的主要作用就是与用户互动,以及操作DOM。这决定了它只能是...原创 2016-12-19 18:14:09 · 395 阅读 · 0 评论 -
js的设计缺陷
原文请搜阮一峰 一、js为什么有缺陷1。设计阶段过于仓促设计者只用十天时间完成js的设计,而且设计初衷只是为了完成简单的网页互动,并没有考虑复杂应用的需要2。设计借鉴太杂设计者本身擅长函数式编程,但由于某些原因又需要将js往面向对象上靠。又因为只想做一种简单的脚本语言就放弃了‘类’的想法,采用prototype继承模型,使这门语言显得有点四不像3。过早的标准化j...原创 2016-12-21 10:45:26 · 250 阅读 · 0 评论 -
遍历对象
syntax 语法 遍历对象var test = { //var a = 1; 对象里这样写是错的 a:1,b:2,c: function (){ alert("c"); } } for (var p in test){ if(typeof(test[p]) == "function"){ test[...原创 2016-12-28 15:23:45 · 85 阅读 · 0 评论 -
作用域
SS 静态作用域(Static Scope) 也叫词法域(Lexical Scope) DS 动态作用域(Dynamic Scope)什么是作用域简单的说“一个变量在什么范围内产生作用”。像java有public,private等关键字描述类的作用域;像js,没有块作用域,最小是函数级作用域。这两种语言都是静态作用域。 静态作用域指变量或声明的作用域是根据程序编译时就确定的...原创 2016-12-28 15:57:12 · 110 阅读 · 0 评论 -
立即执行函数
(function(){...})()和(function(){...}())是两种js立即执行函数的常见写法,为什么要加括号呢 函数声明、函数表达式、匿名函数函数声明:function fnName(){...};使用function关键字声明一个函数,再指定一个函数名,叫函数声明函数表达式:var fnName = function(){...};使用function关键字...原创 2016-12-28 16:27:44 · 167 阅读 · 0 评论 -
json字面量
字面量:百度百科解释,在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)有的解释literal代表如何表达一个值譬如15这个值,你可以用字符串字面量“15”、“十五”或者数值字面量15等方式来表示 json的问题很多人容易把js对象字面量和json字符串搞混json本质是一种数据交换格式,或者说是一种用于描述复杂结构的字符...原创 2016-12-29 12:04:26 · 346 阅读 · 0 评论 -
prototype原型与__proto__隐式原型
javascript中对象就是属性的集合,函数也是一种对象。它也是属性的集合 js默认给函数一个属性--prototype。这个函数值是一个对象(属性的集合,再次强调),默认有一个叫constructor的属性,指向这个函数本身。 有一个函数function F(); var f = new F(); 这样f对象就可以调用F.prototype中的属性,因为每一个对象都有一个隐藏...原创 2017-06-01 15:30:09 · 159 阅读 · 0 评论 -
函数与对象关系
函数是对象,通过下面代码就能验证var fn = function(){};console.log(fn instanceof Object);//true 函数跟对象之间的关系比较复杂 首先:所有对象都是通过函数创建的;有些人可能反驳,不对因为:var obj = {a:10,b:20};var arr = [5,'x'];function fn = {};...原创 2017-06-01 16:19:31 · 231 阅读 · 0 评论 -
instanceof
先给出一个例子function Fn(){};var fn = new Fn();console.log(fn instanceof Fn);//trueconsole.log(fn instanceof Object);//true 看下instanceof运算符的判断规则,语言规范中对instanceof的定义看起来比较繁琐,不过用js代码来表示就很容易懂了...原创 2017-06-01 17:11:47 · 101 阅读 · 0 评论 -
继承(原型链)
javascript中的继承是通过原型链来体现的function Foo(){};var f1 = new Foo();f1.a = 10;Foo.prototype.a = 100;Foo.prototype.b = 200;console.log(f1.a); //10console.log(f1.b);//200 为什么是这个结果呢?访问一个...原创 2017-06-01 17:35:13 · 80 阅读 · 0 评论 -
深入--词法作用域和动态作用域
javascript标题深入开头文章转自:https://github.com/mqyqingfeng/Blog 文章某些部分可能因为理解不同做一些修改 作用域指对某一变量或方法具有访问权限的代码空间,javascript采用词法作用域,也就是静态作用域。js没有块级作用域。 静态作用域,变量和方法的作用域在定义时就确定了动态作用域,变量和方法的作用域在运行时才确定 ...原创 2017-06-02 17:15:17 · 140 阅读 · 0 评论 -
深入--执行上下文栈
顺序执行?如果要问js代码执行顺序的话,写过js的开发者直观印象,就是顺序执行,比如:var foo = function () { console.log('foo1');}foo(); // foo1var foo = function () { console.log('foo2');}foo(); // foo2 但是再看下面这...原创 2017-06-02 18:01:43 · 113 阅读 · 0 评论 -
深入--变量对象
《深入--执行上下文栈》中提到,当javascript执行一堆可执行代码(executable code)时,会创建相应的执行上下文(execution context) 每个执行上下文,都有三个重要属性: 变量对象(Variable Object,VO)作用域链(Scope Chain)this 这篇重点讲创建变量对象的过程 变量对象变量对象是与执...原创 2017-06-05 11:18:47 · 92 阅读 · 0 评论 -
深入--作用域链
接着《深入--变量对象》讲讲作用域链 作用域链 在《深入--变量对象》中讲到,当查找变量的时候,会先从当前上下文的变量对象中查找,如果没有找到,就会从父级(词法层面的父级)执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局对象,这样由多个执行上下文的变量对象构成的链表就叫做作用域链 下面,让我们以一个函数的创建和激活两个时期来讲解作用域链式如何创建和变化...原创 2017-06-05 14:59:39 · 82 阅读 · 0 评论 -
深入--执行上下文
在《深入--词法作用域与动态作用域》中,提出这样一道思考题var scope = "global scope";function checkscope(){ var scope = "local scope"; function f(){ return scope; } return f();}checkscope();...原创 2017-06-05 15:39:41 · 92 阅读 · 0 评论 -
深入--闭包
定义 MDN对闭包的定义为: 闭包是指那些能够访问自由变量的函数那什么是自有变量呢?自有变量是指在函数中使用的,但既不是函数参数也不是函数的局部变量的变量由此,我们可以看出闭包共有两部分组成:闭包 = 函数 + 函数能够访问的自由变量 举个例子var a = 1;function foo(){ console.log(a);}foo();...原创 2017-06-05 17:58:12 · 133 阅读 · 0 评论 -
jQuery1.11.1源码初步解析
jQuery是web程序员的必备js库,估计90%以上的web项目都会用到它。今天周末,心血来潮,打算仔细瞧瞧其庐山真面目。记得以前也对其分析过一次,半途而废了,也没有记录下来。呵呵。废话少说,直接开始。高手请绕行,勿喷,有错误请指正。谢谢。 用eclipse打开jquery-1.11.1.js,源代码如下所示: Java代码 (function( global, fa...原创 2017-06-06 11:24:36 · 543 阅读 · 0 评论 -
new Date()时出的一个错误
javascript是一个弱类型语言,指的是声明一个变量不需要指定类型,且这个变量前后赋值可以不是同一种数据类型。比如:var a = 1; a = ‘1’;是没问题的但是要记住值是有类型的。今天写代码的时候根据后台传过来的值value 写一行代码 value = new Date(value);结果报错invalid date;原因是这个value虽然是个时间戳但...原创 2018-04-08 18:54:51 · 1086 阅读 · 0 评论