个人对call和apply方法的理解

原创 2013年12月04日 09:44:21
<html>   
<head>   
<script language="javascript">   
//定义一个工具"类"(方法),提供具体实现方法,将被很多“类”调用,this将会被使用call或者是apply方法替换——这也是call和apply方法的目的,更换对象
function Utils(){
	this.name = "huangbiao";
	this.getArgumentsLength = function(str){
		return arguments.length;
	}
	this.getDate = function(){
		return new Date();
	}
	this.getUserName = function(){
		alert(this.name);
	}
}

function User(){
	this.name = "biaobiao";
}

//
var util = new Utils();
var user = new User();
//alert(util.getArgumentsLength.call(user,"arg1","arg2","arg3"));

//alert(util.getDate.apply(user))
//下面这种方法类似于java的“子类调用父类对象方法”
util.getUserName();
//getUserName方法中的this已经改为user而不再是util,
util.getUserName.call(user);
</script>   
</head>   
<body></body>   
</html> 

 在自己写插件的时候可以充分利用call和apply的这种特性,但两种方法添加参数的方法是不一致的,分别是逗号和数组

//animal.showName.call(cat,"hb","bb");  
//animal.function_alert.apply(man,["hb","bb","hh"]);

深入理解JavaScript中的call、apply、bind方法的区别

转载自:http://www.jb51.net/article/85367.htm 在JavaScript 中,this的指向是动态变化的,很可能在写程序的过程中,无意中破坏掉thi...

深入理解函数内部原理(六)——函数的内部方法call、apply、bind

call和apply这两个方法都是打破了解析器在函数调用时创建执行环境时赋值this绑定的时候的内部规则,直接通过Function内置标准类型的prototype属性中的两个方法call和apply进...
  • wmaoshu
  • wmaoshu
  • 2017年03月08日 21:22
  • 649

JavaSrcipt中的call()和apply()方法理解

call() call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. 语法:*fun*.call(*thisArg*[, *arg1*[, *arg2*[, .....

JavaScript中call与apply方法

  • 2014年03月11日 20:45
  • 18KB
  • 下载

理解JS中的call、apply、bind方法

理解JS中的call、apply、bind方法(*****************************************************************) ...

理解JS中的call、apply、bind方法

在JavaScript中,call、apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向。 call、apply、bind方法的共同点和区别:...

【JavaScript 学习--09】--理解Js 中的apply 和 call方法

定义 call方法: 语法:function.call(thisArg, arg1, arg2, ...) 定义:call()调用一个function,而这个function的this替换为给定的...

JS中的call()和apply()方法

Js Call方法详解(js 的继承) call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象。 call([thisObj...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:个人对call和apply方法的理解
举报原因:
原因补充:

(最多只允许输入30个字)