1. javascript的with
- <script type= "text/javascript" >
- var o=document.createElement( "div" );
- with (o){
- style.cursor="pointer" ;
- style.zIndex="100" ;
- innerHTML="aaaa" ;
- }
- document.body.appendChild(o);
- </script>
javascript中函数的隐含参数: arguments
Arguments该对象代表正在执行的函数和调用它的函数的参数。[function.]arguments[n]参数
function:选项。当前正在执行的 Function 对象的名字。
n :选项。要传递给 Function 对象的从0开始的参数值索引。说明Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。
caller
返回一个对函数的引用,该函数调用了当前函数。
functionName.caller
functionName 对象是所执行函数的名称。
说明
对于函数来说,caller属性只有在函数执行时才有定义。如果函数是由顶层调用的,那么 caller包含的就是 null 。如果在字符串上下文中使用 caller属性,那么结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本。
callee 返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。[function.]arguments.callee可选项 function参数是当前正在执行的 Function对象的名称。说明callee属性的初始值就是正被执行的 Function 对象。callee属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名
函数的递归或者保证函数的封装性,例如下边示例的递归计算1到n的自然数之和。而该属性
仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性,这个属性有时候
用于验证还是比较好的。arguments.length是实参长度,arguments.callee.length是
形参长度,由此可以判断调用时形参长度是否和实参长度一致。
3. 获取元素坐标(随便记录一下大概实现方法)
jquery版本:
- getOffset= function (e) {
- var to = new Object();
- var obj = $(e);
- var offset = obj.offset();
- to.left = offset.left;
- to.top = offset.top;
- to.right = offset.left + obj.width();
- to.bottom = offset.top + obj.height();
- return to;
- }
js版本:
- getOffset= function (o){
- var to= new Object();
- to.left=to.right=to.top=to.bottom=0;
- var twidth=o.offsetWidth;
- var theight=o.offsetHeight;
- while (o!=document.body){
- if (o.offsetParent== null ){
- break ;
- }
- to.left+=o.offsetLeft;
- to.top+=o.offsetTop;
- o=o.offsetParent;
- }
- to.right=to.left+twidth;
- to.bottom=to.top+theight;
- return to;
- }
4. call 方法
调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容)。
- call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被用作当前对象的对象。
arg1, arg2, , argN
可选项。将被传递方法参数序列。
说明
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
- <input type= "text" id= "myText" value= "input text" >
- <script>
- function Obj(){ this .value= "对象!" ;}
- var value= "global 变量" ;
- function Fun1(){alert( this .value);}
- window.Fun1(); //global 变量
- Fun1.call(window); //global 变量
- Fun1.call(document.getElementById('myText' )); //input text
- Fun1.call(new Obj()); //对象!
- </script>
- var first_object = {
- num: 42
- };
- var second_object = {
- num: 24
- };
- function multiply(mult) {
- return this .num * mult;
- }
- multiply.call(first_object, 5); // returns 42 * 5
- multiply.call(second_object, 5); // returns 24 * 5
5. bind方法
- <script type= "text/javascript" >
- var first_object = {
- num: 42
- };
- var second_object = {
- num: 24
- };
- function multiply(mult) {
- return this .num * mult;
- }
- Function.prototype.bind = function (obj) {
- var method = this ,
- temp = function () {
- return method.apply(obj, arguments);
- };
- return temp;
- }
- var first_multiply = multiply.bind(first_object);
- first_multiply(5); // returns 42 * 5
- var second_multiply = multiply.bind(second_object);
- second_multiply(5); // returns 24 * 5
- </script>
5. JSON.stringify以及JSON.parse
json格式对象和字符串转换函数
- var str = ' { " name " : " xskow " , " age " : 23 } ' ;
- JSON.parse(str);
6. Javascript对象判断
比较准确的判断如下:
- if (obj.constructor == Array) {
- alert('这是一个数组' );
- }
- //主要类型如下:Object / Array / Function / String / Number / Boolean
转自:http://comeonbabye.iteye.com/blog/1167731