现在的位置: 首页 > 综合 > 正文

JS学习记录

2013年02月25日 ⁄ 综合 ⁄ 共 2890字 ⁄ 字号 评论关闭

一章

1:JS语句最好以分号结尾,虽然一般不会出错 但为了兼容性 最好都以分号结束

2:JS的注释不要嵌套,因为/*符号会把最近的 */进行匹配后面的就不是注释了

3:= 和 ==的 区别 =在 比较前会做类型转换(比较宽松)==在比较前不会做类型转换 比较严格

4:对象的2个 操作符

in 判断某个属性是否属于对象

instanceof 判断1个对象是否是某个类的实例

EXAMPLE

var t={name:“暗示”,id:“34556”}

“name” in t

var d=new Date()

d instanceof Date

 

5:typeof 检查 类型信息

var s=“dsds”; typeof s  返回“string”

 

6:delete 用于删除属性或变量 但不能删除核心对象的属性 和用VAR声明的变量 返回BOOL值

d=1; delete d;

var t={op:1 , xx:2} delete op;

 

7:void可以用在任何表达式之前 使表达式的返回值为UNDEFINED

 

8:for   in的循环

var t={pp:1,ll:2};

for(p in t)

alert(t[p]);

对 数组 对象 类的成员进行遍历

 

 

9:NAN表示 非数字 eval()执行字符串的JS代码

escape unescape 编码和解码

 

10 new Array()和=[]都可以直接创建数组对象

 

二:

1:null 和 undefined 都代表值的缺失

未定义和未赋值的都为 undefined

 

2:函数的 参数集合 属性  arguments 的callee属性 可以实现递归算法 因为callee指向函数的引用

function kk(m)

{

   if(m《=0)

       return 1;

   else

      return m*argument.callee(m-1);

}

 

3:函数的caller可以引用 调用函数的 父函数

function f1(v1)
{
    f2(v1,2*v1);
}
function f2(v1,v2)
{
    f3(v1,v2,2*v2);
}
function f3(v1,v2,v3)
{
    var foo=arguments.callee;
    while((foo!=null)&&(foo!=window))
    {debugger
   
//        for(p in foo.arguments)
//         alert(foo.arguments[p]);
         for(var i=0;i<foo.arguments.length;i++)
            alert(foo.arguments[i]);
        foo=foo.caller;
    }
   
}

f1(5);
经实验arguments虽然可以看做是 数组但实际不是数组 因为 for in 无用

 

 4:function 用来定义类 的集中方式

function classa()
{
    pp:"ss";
    ll:"ll";
    f1:function()
    {
        alert("sd");
    }
}

function classb()
{
    this.pp="ss";
    this.ll=1;
    this.f1=function()
    {
        alert("ww");
    }
}
function classc()
{
}
classc.prototype.pp="ss";
classc.prototype.ll="ll";
classc.prototype.f1=function()
{
    alert("ss");
}

 

 

 5:apply和call方法都是将函数绑定到其他对象上执行

apply(thisobj,[arg1,arg2,....argn])             call(thisobj,arg1,arg2.....argn)

方法.apply(另一个对象,[参数])  另一个对象的方法参数和原方法参数个数相同

 

6:this和with关键字

this 在构造器中指新创建的对象实例     在对象方法被调用时指调用该方法的对象实例

with一般用来缩短代码量

with(math)

{

      这里直接可以省略MATH 写他包含的方法 

}

 

 

7:prototype 用来声明类的实例属性和方法  声明类的静态属性和方法直接classA.ss="pp";class.f1=function () {};即可

 

8:JS中类的继承和多态的实现

继承有3中方式

 

function classa()
    {
        pp:"ss";
        ll:1;
    }
A:直接抄写
    function classb()
    {
        pp:"ss";
        ll:1;
    }
   B:循环遍历COPY
    function calssa(){};
    classa.prototype.pp="ss";
    classa.prototype.ll="ll";
    function classb()
    {}
        for(p in classa.prototype)
        classb.prototype[p]=classa.prototype[p];
   
    C:利用OBJECT.EXTEND方法()
    classb.prototype=object.extend({kj:"lk"},classa.prototype)
   
    //D:多态
    function classa()
    {}debugger
    function classb(){}
    classa.prototype={f1:function(){this.f2();},f3:function(x,y){return x+y;}}
   
    classb.prototype=Object.extend(
    {
    f2:function(){return 2;},
    f3:function(x,y,z){return x+y+z;}
    },classa.prototype);
   
    var c=new classb();
    var t=c.f3(3,4,5);
    alert(t);

 

四:

1:moveBy(x,y) 相对移动   moveTo(x,y)绝对移动   resizeBy(w,h) resizeTo(W,H) 调整窗口大小

2:三种提示框 alert() confrim(确定信息) prompt(提示信息,默认值)

3:定时执行代码 setIntervel(code,time) clearIntervel(timer) timer=setIntervel(......)  每隔一段时间会执行

setTimeout(code,time) clearTimeout(timer)一段时间后执行 只执行1次

4:父子窗口交互 window.opener.父窗口方法(子窗口信息参数)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

抱歉!评论已关闭.