关于jscall源码的信息
更新:2022-11-17 13:41
本文目录一览:
- 请教一个js函数里面的call方法
- js读取远程网页源码
- js中的call
- js call 函数问题
- JS中关于call()方法的一个问题,如图中所示,求高手详解。
- 对于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
来替换 sub
,add.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)
表示:- 调用
myFun
函数。 - 传递参数
13
,3
,95
。 - 将
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