js09--函数 call apply

简介:
复制代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>
        <script type=text/javascript charset=utf-8>
        var k = 10 ; 
        function test(){
            this.k = 20;
        }
        alert(window.k);//10
        alert(k);//10
        test();//window.test()
        alert(test.k);// undefined
        alert(window.k);//20
        alert(k);//20
        
        var t = new test();
        alert(t.k);//20
        // this:this对象是指在运行时期基于执行环境所绑定的
        // this总是指向调用者,也就是说 谁调用了我 我就指向谁
        </script>
    </head>
    <body>
    </body>
</html>
复制代码
复制代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>
        <script type=text/javascript charset=utf-8>
        function sum(x , y){
            return x+y;
        }
        function call1(num1 , num2){
            return sum(num1 , num2);//函数可以嵌套调用
        }
        console.log(call1(1,2));
/* 每一个函数都包含两个非继承而来的方法:call、apply。把方法动态加在对象上,给对象加一个已有的新方法,代码的复用。语句执行完对象就没有这个方法了。
使用call()、aplly()来扩充作用域的最大好处就是对象不需要与方法有任何耦合关系。 */
        //call apply  把方法动态加在对象上,给对象加一个已有的新方法,代码的复用。简单的用法:绑定一些函数 用于传递参数 调用 
        function sum(x , y){
            return x+y;
        }
        function call1(num1 , num2){
            return sum.call(this , num1 , num2);//调用的方法-call-(对象,参数)
        }
        function apply1(num1 , num2){
            return sum.apply(this , [num1,num2]);
        }
        alert(call1(10 , 20));
        alert(apply1(20,40));

        window.color = 'red';
        var obj = {color:'blue'};
        var obj2 = {color:'yellow'};
        function showColor(){
            alert(this.color);
        }
        showColor.call(window);
        showColor.call(obj);//把方法加在对象上,给对象加一个已有的新方法。
        
        // call方法的简单模拟与实现
        //function 方法
        function test1(a , b){
            return a+b;
        }
        // 函数名字大写,表示是类,(规范)
        function Obj(x, y){
            this.x = x ; 
            this.y = y ;
            return x*y;
        }
        var o = new Obj(10 , 20);//return对o没影响
        o.method = test1 ;
        alert(o.method(o.x , o.y));
        delete o.method;//o不是{}格式,也可以删除方法属性,语句执行完对象就没有这个方法了
        
        alert(test1.call(o,o.x ,o.y));//语句执行完对象就没有这个方法了
        
        ===============================================================
        function Obj(x, y){
            this.x = x ; 
            this.y = y ;
            this.say = function(){alert(123);}
            return x*y;
        }
        function test1(a , b){
            return a+b;
        }
        var o = new Obj(10 , 20);//return对o没影响

        alert(o.x);
        delete o.x;
        alert(o.x);//undefined

        o.say();//123
        delete o.say;
        o.say();//o.say is not a function

        o.method = test1 ;
        alert(o.method(o.x , o.y));//30
        delete o.method;//语句执行完对象就没有这个方法了
        alert(o.method(o.x , o.y));//o.method is not a function
        </script>
    </head>
    <body>
    </body>
</html>
复制代码

 



本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/6864527.html,如需转载请自行联系原作者
相关文章
|
2月前
|
JavaScript 前端开发 Java
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
本文介绍了JavaScript中常用的函数和方法,包括通用函数、Global对象函数以及数组相关函数。详细列出了每个函数的参数、返回值及使用说明,并提供了示例代码。文章强调了函数的学习应结合源码和实践,适合JavaScript初学者和进阶开发者参考。
43 2
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
|
2月前
|
JavaScript 前端开发
js中的bind,call,apply方法的区别以及用法
JavaScript中,`bind`、`call`和`apply`均可改变函数的`this`指向并传递参数。其中,`bind`返回一个新函数,不立即执行;`call`和`apply`则立即执行,且`apply`的参数以数组形式传递。三者在改变`this`指向及传参上功能相似,但在执行时机和参数传递方式上有所区别。
30 1
|
2月前
|
前端开发 JavaScript 开发者
除了 Generator 函数,还有哪些 JavaScript 异步编程解决方案?
【10月更文挑战第30天】开发者可以根据具体的项目情况选择合适的方式来处理异步操作,以实现高效、可读和易于维护的代码。
|
3月前
|
JavaScript 前端开发
JavaScript 函数语法
JavaScript 函数是使用 `function` 关键词定义的代码块,可在调用时执行特定任务。函数可以无参或带参,参数用于传递值并在函数内部使用。函数调用可在事件触发时进行,如用户点击按钮。JavaScript 对大小写敏感,函数名和关键词必须严格匹配。示例中展示了如何通过不同参数调用函数以生成不同的输出。
|
3月前
|
JavaScript 前端开发
JS高级—call(),apply(),bind()
【10月更文挑战第17天】call()`、`apply()`和`bind()`是 JavaScript 中非常重要的工具,它们为我们提供了灵活控制函数执行和`this`指向的能力。通过合理运用这些方法,可以实现更复杂的编程逻辑和功能,提升代码的质量和可维护性。你在实际开发中可以根据具体需求,选择合适的方法来满足业务需求,并不断探索它们的更多应用场景。
14 1
|
3月前
|
存储 JavaScript 前端开发
JS函数提升 变量提升
【10月更文挑战第6天】函数提升和变量提升是 JavaScript 语言的重要特性,但它们也可能带来一些困惑和潜在的问题。通过深入理解和掌握它们的原理和表现,开发者可以更好地编写和维护 JavaScript 代码,避免因不了解这些机制而导致的错误和不一致。同时,不断提高对执行上下文等相关概念的认识,将有助于提升对 JavaScript 语言的整体理解和运用能力。
|
8月前
|
JavaScript 前端开发
javascript中的call和apply
javascript中的call和apply
|
5月前
|
前端开发 JavaScript 开发者
揭秘JavaScript魔法三剑客:call、apply、bind,解锁函数新世界,你的前端之路因它们而精彩!
【8月更文挑战第23天】在 JavaScript 的世界里,`call`、`apply` 和 `bind` 这三个方法常常让新手感到困惑。它们都能改变函数执行时的上下文(即 `this` 的指向),但各有特点:`call` 接受一系列参数并直接调用函数;`apply` 则接收一个参数数组,在处理不确定数量的参数时特别有用;而 `bind` 不会立即执行函数,而是创建一个新版本的函数,其 `this` 上下文已被永久绑定。理解这三个方法能帮助开发者更好地运用函数式编程技巧,提升代码灵活性和可维护性。
45 0
|
3月前
|
JavaScript 前端开发
js 中call()和apply()
js 中call()和apply()
33 1
|
4月前
|
JavaScript 前端开发
this指向的几种情况以及js简单实现call、apply、bind___六卿
本文讨论了JavaScript中`this`的指向规则,并提供了`call`、`apply`和`bind`方法的简单实现,用于改变函数的`this`指向。
20 0
this指向的几种情况以及js简单实现call、apply、bind___六卿