用法为为一个
插件 方法 传参,和
获取 事件目标元素:event = event || window.event
// IE有window.event对象,而FF没有。
方法有对象原型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...
@H_
502 _0@
闭包偏见
@H_
502 _0@
方法体都可以称为一个闭包,并非什么只有内嵌
函数 来引用了外部
函数 的某个参数或
属性 才会发生。
* 它有一个独立作用域,在该作用域内可存在若干的子作用域(就是
方法 嵌套
方法 ),最终该闭包作用域为最外层
方法 的作用域
* 它包含了本身
方法 参数和所有内嵌
函数 的
方法 参数,所以当一个内嵌
函数 在外部有引用时,该引用的作用域为引用
函数 所在的(顶级)
方法 作用域
*/
function a(x) {
function b(){
alert(x); // 引用外部
函数 参数
}
return b;
}
var run = a('run...');
// 由于作用域的扩大,可以引用到外部
函数 a的变量并
显示
run(); // alert(): run..
@H_
502 _0@
获取 地址参数字符串和定时刷新
@H_
502 _0@
获取问号?后面的
内容 ,
包括 问号
var x = window.location.search
//
获取 警号#后面的
内容 ,
包括 #号
var y = window.location.hash
// 配合定时器可实现网页
自动 刷新
window.location.reload();
@H_
502 _0@
Null和Undefined
@H_
502 _0@
函数企图返回一个不存在的对象。
* 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
@H_
502 _0@
@H_
502 _0@
方法a多了一个参数2
function a(x){
var arg = Array.prototype.push.call(arguments,2);
alert(arguments[0]+'__'+arguments[1]);
}
@H_
502 _0@
自定义 SELECT边框样式
@H_
502 _0@
@H_
502 _0@
最简单的调色盘
@H_
502 _0@
@H_
502 _0@
函数 、对象 is 数组?
@H_
502 _0@
属性
anObject.aMethod = function(){alert(“Method of object”)}; //对象的一个
方法
//主要看下面:
alert(anObject[“aProperty”]); //可以将对象当数组以
属性 名作为下标来访问
属性
anObject[“aMethod”](); //可以将对象当数组以
方法 名作为下标来
调用 方法
for( var s in anObject) //遍历对象的所有
属性 和
方法 进行迭代化处理
alert(s + ” is a ” + typeof(anObject[s]));
// 同样对于function类型的对象也是一样:
var aFunction = function() {}; //一个
函数
aFunction.aProperty = “Property of function”; //
函数 的一个
属性
aFunction.aMethod = function(){alert(“Method of function”)}; //
函数 的一个
方法
//主要看下面:
alert(aFunction[“aProperty”]); //可以将
函数 当数组以
属性 名作为下标来访问
属性
aFunction[“aMethod”](); //可以将
函数 当数组以
方法 名作为下标来
调用 方法
for( var s in aFunction) //遍历
函数 的所有
属性 和
方法 进行迭代化处理
alert(s + ” is a ” + typeof(aFunction[s]));
@H_
502 _0@
函数可以象数组一样,用
属性 名或
方法 名作为下标来访问并处理。
* 那么,它到底应该算是数组呢,还是算对象?我们知道,数组应该算是线性数据结构,线性数据结构一般有一定的规律,适合进行统一的批量迭代操作等,有点像波。
* 而对象是离散数据结构,适合描述分散的和个性化的东西,有点像粒子。
* 因此,我们也可以这样问:JavaScript 里的对象到底是波还是粒子?如果存在对象量子论,那么答案一定是:波粒二象性!
* 因此,JavaScript里的
函数 和对象既有对象的特征也有数组的特征。这里的数组被称为“字典”,一种可以任意伸缩的
名称 值对儿的集合。其实, object和function的内部实现就是一个字典结构,但这种字典结构却通过严谨而精巧的语法表现出了丰富的外观。正如量子力学在一些地方用粒子来 解释和处理问题,而在另一些地方却用波来解释和处理问题。你也可以在需要的时候,自由选择用对象还是数组来解释和处理问题。只要善于把握 JavaScript 的这些奇妙特性,就可以编写出很多简洁而强大的
代码 来。
*/
@H_
502 _0@
点击空白处能触发某一元素关闭 /隐藏
@H_
502 _0@
页面有个下拉
菜单 或者什么的
效果 ,需要
用户 点击空白处或者点击其他元素时将其隐藏
* 可用一个全局document点击事件来触发
* @param {Object} "目标对象"
*/
$(document).click(function(e){
$("目标对象").hide();
});
/**
* 但是有一个缺点就是当你点击该元素又想让他
显示
* 如果你不及时阻止事件冒泡至全局出发document对象点击时,上面
方法 就会执行
*/
$("目标对象").click(function(event){
event = event || window.event;
event.stopPropagation(); // 当点击目标对象时,及时阻止事件冒泡
$("目标对象").toggle();
});
@H_
502 _0@以上都是个人整理的一些常用的javascript小
方法 ,记录下来方便自己开发时直接拿来使用,这里也推荐给有需要的小伙伴。