- 浏览: 1171913 次
- 性别:
- 来自: 北京
最新评论
-
zhizhen23:
LZ 提供的链接地址失效了
重写的isPlainObject方法 -
LovingBaby:
LovingBaby 写道function fun() {}f ...
读jq之二(两种扩展) -
LovingBaby:
说的很清楚!jQuery作者为了实现简洁调用的苦心!高超的编程 ...
读jq之一(jq对象的组成) -
hard_ly:
...
将伪数组转换成数组 -
zlxzlxzlxzlxzlx:
这不能算是任意进制之间的转换,例如二十六进制、十二进制又该如何 ...
用递归实现十进制数转换N进制
文章列表
JavaScript获取图片的原始尺寸
- 博客分类:
- Core JS
页面里的img元素,想要获取它的原始尺寸,以宽度为例可能首先想到的就是width,如下
<img src="http://img11.360buyimg.com/da/g14/M07/01/0E/rBEhVlNhh8wIAAAAAADmFBLo1twAAM26gOmCgYAAOYs716.jpg">
<script>
var img = document.getElementsByTagName(' ...
有时需要获取图片的尺寸,这需要在图片加载完成以后才可以。有三种方式实现,下面一一介绍。
一、load事件
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>img - load event</title>
</head>
<body>
<img id="img1" src="http://pic1.win4000.com/wal ...
Mac OS X 设置取消开机自动启动
- 博客分类:
- Tool
1. 启动系统设置 (System Preferences)
2. 点以上截图的 用户/组 (User&Groups)
3. 切换到 “登录选项” (Login Items)
可以看到有safari、firefox、sublime text是默认开机启动的,点击左下角的“+-” 即可添加或删除开机启动程序。
OSX自带了SVN命令行,通过终端就可以使用了。
一、SVN ignore
Mac的SVN想把node_modules 忽略,即svn status时(svn st缩写)不显示node_nodules。百度了下几篇博文,使用命令行 svn propset svn:ignore 'node_modules'
http://spiritfrog.iteye.com/blog/445425
设置了几次,都不起作用。看了几篇其它的文章都不行。Stackoverflow也打不开了,呃。
最后只能去直接修改config文件了
1. cd到 ~/.subversion
JavaScript中奇葩的假值
- 博客分类:
- Core JS
通常在以下语句结构中需要判断真假
if分支语句
while循环语句
for里的第二个语句
如
if (boo) {
// do something
}
while (boo) {
// do something
}
JavaScript中有 6 个值为“假”,这六个值是
false
null
undefined
0
'' (空字符串)
NaN
这里面 false 本身是布尔类型,其它 5 个则不是。
除了这 6 个外,其它均为“真” ,包括对象、数组、正则、函数等。注意 '0'、'null'、'false'、{}、[]也 ...
世界上最短的数字判断代码
- 博客分类:
- Core JS
我们知道JavaScript提供了typeof运算符,因此最容易想到的是用typeof来判断是否是number类型
function isNumber(obj) {
return typeof obj === 'number'
}
这个函数对于整数和浮点数都没有问题,但对于NaN值也返回true这让人感到不爽,毕竟用isNumber判断通过后谁也不会用NaN去做算术运算。
那改进一下,用Object.prototype.toString试试
function isNumber(obj) {
return Object.prototype.toString. ...
以前需要用JS写一个自动完成组件(Suggest),很费劲。HTML5时代则不用了,直接使用datalist标签,直接减少了工作量。如下
<!DOCTYPE html>
<html>
<head>
<title>HTML5 datalist tag</title>
<meta charset="utf-8">
</head>
<p>
浏览器版本:<input list="words">
...
利用keydown事件阻止用户输入
- 博客分类:
- Widget
先了解下各事件的区别
keydown:在控件有焦点的情况下按下键时发生
keypress:在控件有焦点的情况下按下键时发生
keyup: 在控件有焦点的情况下释放键时发生
意义
keypress主要用来接收字母、数字等ANSI字符。keydown 和 keyu ...
如何自定义Grunt任务
- 博客分类:
- Node
任务(Tasks)是grunt的核心概念,你所做的很多工作比如资源合并(concat)、压缩(uglify)都是在配置任务。每次grunt运行的时候,你指定的一个或多个任务也在运行,如果你没有指定任务,那么一个默认名为“default”的任务将自动运行。
有时我们需要写一些自己的grunt任务,下面是一个具体例子
一、准备
1. 新建一个目录g12. 新建package.json,放入g13. 新建Gruntfile.js,放入g1
package.json
{
"name": "g1",
"v ...
如何定制你自己的jQuery
- 博客分类:
- jQuery
jQuery随着版本的不断升级代码量也随之增加,从1.0.0的不到两千行到现在的1.10.2已经突破1万行。
新的API不断增加,但有些在项目中并没有用到。jQuery团队很早就考虑到这一点,按模块来划分,并可以按需定制自己的jQuery。
jQuery从1.9开始构建工具迁移到grunt。grunt是基于node的,因此需要安装node,下面详细介绍。
一、安装node
很简单,这里有入门参考。
getBoundingClientRect可以获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置,最早在IE中实现,后其它浏览器均已实现。
但它在IE9,10中有个bug,当出现垂直滚动条时,获取top总为0。其它浏览器则能正常获取。代码如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>IE9/10 getBoundingClientRect bug</title&g ...
Node.js的模块载入方式与机制
- 博客分类:
- Node
Node.js中模块可以通过文件路径或名字获取模块的引用。模块的引用会映射到一个js文件路径,除非它是一个Node内置模块。Node的内置模块公开了一些常用的API给开发者,并且它们在Node进程开始的时候就预加载了。
其它的如 ...
很多代码优化及公司规范都会提到
写对象不应该
var obj = new Object()
而应该
var obj = {}
写数组不应该
var arr = new Array()
而应该
var arr = []
很多书籍《JavaScript高级程序设计》《JavaScript权威指南》也建议使用对象、数组直接量而别使用new方式。这里就引出了直接量(Literals)的概念。
ES1(1997.6)规定的直接量有四种:Null、Boolean、Numeric、String
JavaScript中的不可见数据类型
- 博客分类:
- Core JS
JS提供了一些内置对象、函数和构造器供我们编程,如Math、parseInt、Object、Array等。这些都是可见的,编程时可以使用的。比如我可以new Object 或 new Array。
有一些则是不可见的,这些对象只能由引擎在特殊的情形提供。这些类型的对象往往还被消减了一些功能。下面列举一些
一、Arguments 类型
Arguments 类型 不能由程序员手动创建其对象,即你不能 new Arguments() 。 它有且仅有一个对象arguments
function func() {
console.log(arguments[0]) ...
严格模式(Strict mode)是由ECMA-262规范定义的新兴JavaScript标准,第五版发布于2009年12月。旨在改善错误检查功能并且标识可能不会延续到未来JavaScript版本的脚本。ES5严格模式是限制性更强的JavaScript变体,它与常规JavaScript的语义不同,其分析更为严格。
目前,除了IE6-9,其它浏览器均已支持ES5严格模式。
一、严格模式的使用
严格模式的使用很简单,只有在代码首部加入字符串 "use strict"。有两种应用场景,一种是全局模式,一种是局部模式。
1)全局模式
'use strict' ...