js特性的一些总结

1、JS函数的参数可变长。如果一个函数规定有两个参数,在调用函数的时候不一定非要传两个参数,也可以不传或只传一个;另外就是说在写函数的时候不需要规定参数,也可以通过函数的内部属性arguments得到参数值。

例:

function test(){

   var args=arguments;

   alert(arguments);

}

test(1,2,3,4);

结果会弹出4;

 

2、JS函数不能重载。

简单说就是如果在一个窗口里,写两个函数名相同的函数,在调用时按照加载顺序,会执行最后一个加载函数。

 

3、命名空间

window是全局对象。其实就是一层一层的对象来构成命名空间,而window是顶层对象。

 

4、函数嵌套

JS函数是可以嵌套的,下面是一个调用例子:

 var outname="hys";
   function outfun(){
      var name="qhm";
      function innerfun(){
        alert(outname+name+"在一起");
      }
      return innerfun;
   }
   var cache=outfun();
   cache();

这个例子还实现了外部可以调用函数内部的方法,JS规定外部是不能直接调用内部方法的,上例通过return把内部方法返回出来,这样就变象实现了调用。

 

5、call和apply的用法及区别

function myfunc(){

     alert(this.name);

}

myfunc.call({name:'人才'});

myfunc.apply({name:'蠢才'});

这两个关键字的功能就是调用执行方法对象,也就是myfunc。

区别如下:

myfunc.call({},arg1,arg2,arg3);

myfunc.apply({},[arg1,arg2,arg3]);

第一个参数为函数中this需要绑定的对象,这是一样的。

第二个参数就不一样了,call是可变长参数,而apply是一个参数数组。区别仅此而已。

 

6、可通过‘()’直接运行函数

例如:

(function(){

      alert("test");

})();

执行结果为弹出test警告框。

 

7、Function

可以通过 var fn=new Function('x','s','alert("test")');来创建函数,其中最后一个参数为方法体,前面的所有参数为方法入参。一般不推荐这样写。

 

8、JS自带的方法对象属性

在JS中,方法本身也是一个对象,一旦创建就自动包含五个隐藏属性:arguments、callee、caller、length、prototype。

arguments:方法参数属性,可以通过arguments.length来得到传入方法的参数个数。并且可以通过arguments[0]下标的方法得到参数的值。注意:arguments虽然可以通过数组下标来访问但本身不是数组类型,不能够用数组特有的方法来处理。

callee:是arguments的一个属性,意为指向函数自己arguments.callee

(function test(){

    alert(arguments.callee);

})();

结果会弹出函数本身作为一个字符串弹出。

caller:指向的是调用者。

function code(){

   alert(code.caller);

}

function beathim(){

     code();

}

beathim();

 会弹出beathim,意为是beathim在调用code函数。

 

prototype:可以增加属性,增加了之后可以立即影响到这个类的所有实例。添加上去的属性是被当做“实例属性”对待的,利用了JS的原型查找机制,这么做可以大量节资源。

Animal=function(name,age){

    this.name=name;

    this.age=age;

}

Animal.prototype.TYPE="动物";

var animal=new Animal("姓名","25");

alert(animal.TYPE);

 

9、JS定时器

setTimeout和setInterval两个自带的定时器,不同之处在于,setTimeout是在指定的时间之后执行一次指定的函数,而setInterval会不断执行,直到取消。取消定时器的方法名分别是clearTimeout和clearInterval

 

10、delete方法

该方法可以对对象里的属性进行删除

var obj={};
obj.sayHello=function (){
   alert("hello");
};

obj.sayHello();

delete obj.sayHello;

obj.sayHello();

 

以上例子,第二次调用法sayHello方法就会报方法不存在的错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值