关于jscall源码的信息

发布时间:2023-12-08

关于jscall源码的信息

更新:2022-11-17 13:41

本文目录一览:

  1. 请教一个js函数里面的call方法
  2. js读取远程网页源码
  3. js中的call
  4. js call 函数问题
  5. JS中关于call()方法的一个问题,如图中所示,求高手详解。
  6. 对于javascript 中的call函数的理解问题

请教一个js函数里面的call方法

亲,call方法:

语法:

call([thisObj[,arg1[, arg2[, [,.argN]]]]])

定义:

调用一个对象的一个方法,以另一个对象替换当前对象。

说明:

  • call 方法可以用来代替另一个对象调用一个方法。
  • call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
  • 如果没有提供 thisObj 参数,那么全局对象(Global)被用作 thisObj

示例:

function add(a, b) {
    alert(a + b);
}
function sub(a, b) {
    alert(a - b);
}
add.call(sub, 3, 1); // 等价于 add(3, 1),结果为 alert(4)

解释:

这个例子中的意思是用 add 来替换 subadd.call(sub, 3, 1) 等价于 add(3, 1),所以运行结果为:alert(4)

注意:JS 中的函数其实是对象,函数名是对 Function 对象的引用。


js读取远程网页源码

示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>远程网页源代码读取</title>
    <style type="text/css">
        /* 页面字体样式 */
        body, td, input, textarea {
            font-family: Arial;
            font-size: 12px;
        }
    </style>
    <script type="text/javascript">
        // 用于创建XMLHttpRequest对象
        function createXmlHttp() {
            if (window.XMLHttpRequest) {
                xmlHttp = new XMLHttpRequest(); // FireFox、Opera等浏览器支持
            } else {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // IE浏览器支持
            }
        }
        // 直接通过XMLHttpRequest对象获取远程网页源代码
        function getSource() {
            var url = document.getElementById("url").value; // 获取目标地址信息
            if (url == "") {
                alert("请输入网页地址 。");
                return;
            }
            document.getElementById("source").value = "正在加载……"; // 提示正在加载
            createXmlHttp(); // 创建XMLHttpRequest对象
            xmlHttp.onreadystatechange = writeSource; // 设置回调函数
            xmlHttp.open("GET", url, true);
            xmlHttp.send(null);
        }
        // 将远程网页源代码写入页面文字区域
        function writeSource() {
            if (xmlHttp.readyState == 4) {
                document.getElementById("source").value = xmlHttp.responseText;
            }
        }
    </script>
</head>
<body>
    <h1>远程网页源代码读取</h1>
    <div>
        地址:<input type="text" id="url">
        <input type="button" onclick="getSource()" value="获取源码">
    </div>
    <textarea rows="10" cols="80" id="source"></textarea>
</body>
</html>

js中的call

  • Java中对象包含属性和方法,方法即函数,只有对象可以调用方法。
  • 但JS中一切皆对象,函数是对象,函数也可以调用方法。
  • JS 中函数原型上挂载了以下方法:
    • Function.prototype.call
    • Function.prototype.apply
    • Function.prototype.bind
    • Function.prototype.toString 这些方法的存在是为了更灵活地控制函数的执行上下文。

call 的作用:

  • call 可以改变函数执行时的 this 指向。
  • 通过 call,我们可以让一个对象的方法在另一个对象的上下文中执行。

js call 函数问题

call 函数用于纠正 this 指针。 例如:

var args = Array.prototype.slice.call(arguments, 1, 2);

slice 函数中,this 指向的是 arguments 对象,而不是默认的 testFunction 上下文。

JS中关于call()方法的一个问题,如图中所示,求高手详解。

示例分析:

obj.f();

当对象 obj 调用 f 函数时,this 指向 obj,因此 this.a = 'A' 实际上是 obj.a = 'A'

f.call(obj) 的含义:

  • f.call(obj) 相当于 obj.f()
  • 所以 f.call(obj) 的影响就是 obj.a = 'A'

四种调用方式分析:

第一种:

  • e.a = 'A'
  • alert(a) 出错,因为 a 未定义。

第二种:

  • f.call(e.t) 相当于 f.call(undefined),即 f()window.f()
  • window.a = 'A'
  • alert(a) 实际上是 alert(window.a),结果为 A

第三种:

  • y 未定义,调用出错。

第四种:

  • f.call(e) 相当于 e.a = 'A'
  • alert(e.a) 输出 A

对于javascript 中的call函数的理解问题

标准解释:

call 方法是将一个对象的方法在另一个对象的上下文环境中执行。

详细解释:

  • myFun.call(myObject, 13, 3, 95) 表示:
    1. 调用 myFun 函数。
    2. 传递参数 13, 3, 95
    3. myFun 函数中的所有 this 替换为 myObject

示例代码:

function myFun(p1, p2, p3) {
    this.para1 = p1;
    this.para2 = p2;
    this.para3 = p3;
}
var myObject = new Object();
alert(myObject.para1); // 显示 undefined
myFun.call(myObject, 13, 3, 95); // 效果等同于:
// myObject.para1 = 13;
// myObject.para2 = 3;
// myObject.para3 = 95;
alert(myObject.para1); // 显示 13