// b不为null:a=b, b为null:a=1。
var a = b || 1;
// 较常见的用法为为一个插件方法传参,和获取事件目标元素:event = event || window.event
// IE有window.event对象,而FF没有。
只有方法对象才有prototype原型属性
复制代码 代码如下:
// 方法有对象原型prototype属性,而原始数据没有该属性,如 var a = 1, a没有prototype属性
function Person() {} // 人的构造函数
Person.prototype.run = function() { alert('run...'); } // 原型run方法
Person.run(); // error
var p1 = new Person(); // 只有在new操作符时,此时才会把原型run方法赋值给p1
p1.run(); // run...
快速获取当天为星期几
复制代码 代码如下:
// 计算系统当前时间是星期几
var week = "今天是:星期" + "日一二三四五六".charat(new date().getDay());
闭包偏见
复制代码 代码如下:
/**
* 闭包:任何一个js方法体都可以称为一个闭包,并非什么只有内嵌函数来引用了外部函数的某个参数或属性才会发生。
* 它有一个独立作用域,在该作用域内可存在若干的子作用域(就是方法嵌套方法),最终该闭包作用域为最外层方法的作用域
* 它包含了本身方法参数和所有内嵌函数的方法参数,所以当一个内嵌函数在外部有引用时,该引用的作用域为引用函数所在的(顶级)方法作用域
*/
function a(x) {
function b(){
alert(x); // 引用外部函数参数
}
return b;
}
var run = a('run...');
// 由于作用域的扩大,可以引用到外部函数a的变量并显示
run(); // alert(): run..
获取地址参数字符串和定时刷新
复制代码 代码如下:
// 获取问号?后面的内容,包括问号
var x = window.location.search
// 获取警号#后面的内容,包括#号
var y = window.location.hash
// 配合定时器可实现网页自动刷新
window.location.reload();
Null和Undefined
复制代码 代码如下:
/**
* Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。
* Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
* ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。
* 但是,如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法
* 在进行判断时根据需要,判断对象是否有值时最好用‘==='强类型判断。
*/
var a;
alert(a === null); // false,因为a不是一个空对象
alert(a === undefined); // true,因为a未初始化,值为undefined
// 引申
alert(null == undefined); // true,因为‘=='运算符会进行类型转换,
// 同理
alert(1 == '1'); // true
alert(0 == false); // true,false转换为Number类型为0
给方法动态添加参数
复制代码 代码如下:
// 方法a多了一个参数2
function a(x){
var arg = Array.prototype.push.call(arguments,2);
alert(arguments[0]+'__'+arguments[1]);
}
自定义SELECT边框样式
复制代码 代码如下: