Js中的call和apply
2016-03-29 11:44
162 查看
函数有俩个属性,call和apply,这俩属性都是用于动态的改变this,
普通的函数的this都是指向调用函数的对象或者该函数生成对的对象,如下面的例子
实际上,Js中的指针复杂要比上述复杂的多,但是记住一点,this的值只在执行的时候有值,在不同的情况下会有不同的值,但是都和调用它的执行环境有关,基本指向当前活动的对象。
下面回到call函数,apply就是将传入的参数以数组的形式传入即可,其他都相同
可以上述代码的log看出,函数调用call将自己应用的对象改变了,即原来是在window对象下,然后调用之后,这个函数应有于oDiv对象了。
普通的函数的this都是指向调用函数的对象或者该函数生成对的对象,如下面的例子
function Foo(){ this.name = "ruiy"; this.age = 20; console.log(this);//Foo{name:"ruiy",age:20} } var obj = new Foo(); console.log(obj.name);//ruiy console.log(obj.age);20 Foo();//Window obj.fun = function(){ console.log(this); } obj.fun();//Foo{name:"ruiy",age:20}
实际上,Js中的指针复杂要比上述复杂的多,但是记住一点,this的值只在执行的时候有值,在不同的情况下会有不同的值,但是都和调用它的执行环境有关,基本指向当前活动的对象。
下面回到call函数,apply就是将传入的参数以数组的形式传入即可,其他都相同
function changeStyle(attr,value){ // console.log(this); // console.log(this.style); this.style[attr] = value; console.log(this); } window.onload = function(){ console.log(this);//Window对象 var oDiv = document.getElementById("box"); window.changeStyle.call(oDiv,"height","200px");//<div>对象 }
可以上述代码的log看出,函数调用call将自己应用的对象改变了,即原来是在window对象下,然后调用之后,这个函数应有于oDiv对象了。
相关文章推荐
- 苹果 Apple Beta 版软件计划 相关软件地址
- iOS 学习笔记五 【2016年百度地图定位详细使用方法】
- android对话框的设置二
- Apple官方例子代码地址
- Android小记:ListView中的按钮点击响应事件
- csapp 第八章第2题的疑惑
- Theme.AppCompat.Light"等主题不存在的问题
- Android手机 Fildder真机抓包
- Android_Fragment_Fragment详解
- Swift--map函数浅析
- oc类的创建与使用与数组的四种遍历示例
- iOS开发 - 广播(跑马灯)的实现
- 超全!整理常用的iOS第三方资源
- Android 避免APP启动闪黑屏(Theme和Style)
- iOS 最新版9.3 disk image
- android对话框的设置
- ios优秀开发者笔记汇总
- 拥抱 Android Studio 之五:Gradle 插件开发
- iOS调试—断点调试
- iOS实时通讯之socket