JavaScript中神奇的call()方法
作者:junjie 时间:2024-04-30 09:52:41
先看看关于call()的官方解释,“调用一个对象的一个方法,以另一个对象替换当前对象。”,看了这样的解释,或许让你更摸不着头脑了。看例子:
var x = "我是全局变量";//定义全局变量x
function a(){//定义函数类结构a
this.x = "我是在函数类结构a中声明的哦";
}
//定义普通函数,弹出当前指针所包含的变量x的值
function f(){
alert (this.x);
}
//返回值为“我是在函数类结构a中声明的哦”
f.call(new a());
我的理解是,f.call(new a())就是把函数(其实也是对象)f复制到被调用对象“new a()”下面去解析,事实上和下面这段代码的解析结果一样:
function a(){
this.x = "我是在函数类结构a中声明的哦";
alert(this.x);
}
a();
只不过此时变量X的作用域不同而已,咿…看起来好像有点继承的味道哦,难道不是吗?在上例中,f完全被构造函数a的实力对象继承了,如果说这还不足以说明a.call(b)是一种继承模式,那么再看一个更具有继承味道的用法吧。
function f(){
this.a ="a";
this.b = function(){
alert("b");
}
}
function e(){
f.call(this);
}
var c = new e();
alert(c.a); //弹出a
c.b(); //弹出b
在这个例子中,只要会使用浏览器的朋友,都能看得出来e完全继承了f的属性和方法,否则是无法解释的,因为在e中并没有定义属性a和b,那么按常理推断在e的实例对象c中,并不会出现这两个属性。
标签:JavaScript,call()
0
投稿
猜你喜欢
asp如何在网上查找链接?
2010-06-22 21:10:00
perl实现检测服务器中的服务是否正常脚本分享
2022-05-05 21:17:12
Python调用adb命令实现对多台设备同时进行reboot的方法
2022-08-06 02:40:45
python Graham求凸包问题并画图操作
2023-06-01 12:37:00
快速掌握ASP连接11种数据库的常用语法
2008-11-28 15:32:00
python 星号(*)的多种用途
2021-08-13 06:16:27
Python读取Excel数据实现批量生成PPT
2021-03-05 23:57:35
python频繁写入文件时提速的方法
2023-11-11 01:48:40
ShardingSphere数据库读写分离算法及测试示例详解
2024-01-19 06:21:09
C#将图片存放到SQL SERVER数据库中的方法
2024-01-17 14:44:30
ASP中将Excel数据导入到Access
2009-02-02 09:15:00
Python基于opencv实现的人脸识别(适合初学者)
2021-10-13 19:39:29
Go每日一库之dateparse处理时间
2024-04-26 17:25:55
javascript 得到变量类型的函数
2024-04-30 08:53:34
解决“引入同一个JS文件在非IE6中正常,但IE6报错”的问题
2009-04-03 11:42:00
python使用yield压平嵌套字典的超简单方法
2023-08-28 03:20:00
关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
2012-08-21 10:22:21
将keras的h5模型转换为tensorflow的pb模型操作
2021-06-05 15:14:06
基于JS实现经典的井字棋游戏
2024-04-28 09:51:10
对numpy中数组转置的求解以及向量内积计算方法
2023-01-23 16:39:52