码迷,mamicode.com
首页 > 编程语言 > 详细

javascript学习笔记08

时间:2015-05-21 10:25:00      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

length,call和apply

    <script type="text/javascript">
    function fn1() {
        
    }
    
    function fn2(num1,num2) {
        
    }
    
    function fn3(num1){
        
    }
    //函数的length就表示该函数所期望的参数值
    alert(fn1.length);//0
    alert(fn2.length);//2
    alert(fn3.length);//1
    </script>

 

<script type="text/javascript">
    function sum(num1,num2) {
        return num1+num2;
    }
    
    function callSum1(num1,num2) {
        //使用sum这个函数来完成一次调用,调用的参数就是callSum1这个函数的参数
        //apply的第二个参数表示一组参数数组
        return sum.apply(this,arguments);
    }
    
    function callSum2(num1,num2) {
        //关键就是第二个参数是数组
        return sum.apply(this,[num1,num2]);
    }
    alert(callSum1(12,22));
    alert(callSum2(22,32));
    
    function callSum3(num1,num2) {
        //call是通过参数列表来完成传递,其他和apply没有任何区别
        return sum.call(this,num1,num2);
    }
    alert(callSum3(22,33));
    </script>
</body>

 

<script type="text/javascript">
    /**
     * 当需要创建一个类的时候,设置类的属性和方法需要通过this关键字来引用
     * 但是特别注意:this关键字在调用时会根据不同的调用对象变得不同
     */
    
    var color = "red";
    function showColor() {
        alert(this.color);
    }
    /**
     * 创建了一个类,有一个color的属性和一个show的方法
     */
    function Circle(color) {
        this.color = color;
    }
    
    var c = new Circle("yellow");
    
    showColor.call(this);//使用上下文来调用showColor,结果是red
    showColor.call(c);//上下文对象是c,结果就是yellow
    /**
     * 通过以上发现,使用call和apply之后,对象中可以不需要定义方法了
     * 这就是call和apply的一种运用
     */
    </script>

javascript学习笔记08

标签:

原文地址:http://www.cnblogs.com/canceler/p/4518789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!