资源描述:
《浅谈javascript中的call、apply、bind》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解浅谈javascript中的call、apply、bind 这篇文章主要为大家详细介绍了javascript中的call、apply、bind方法,感兴趣的朋友可以参考一下 在JavaScript中,call、apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向,从而可以达到`接花移木`的效果。本文将对这三个方法进行详细的讲解,并列出几个
2、经典应用场景。 call(thisArgs[,args...]) 该方法可以传递一个thisArgs参数和一个参数列表,thisArgs指定了函数在运行期的调用者,也就是函数中的this对象,而参数列表会被传入调用函数中。thisArgs的取值有以下4种情况: (1)不传,或者传null,undefined,函数中的this指向window对象 (2)传递另一个函数的函数名,函数中的this指向这个函数的引用 (3)传递字符串、数值或布尔类型等基础类型,函数中的this指向其对应的包装对象,如String、Number
3、、Boolean (4)传递一个对象,函数中的this指向这个对象 functiona(){ console.log(this);//输出函数a中的this对象对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 } functionb(){}//定义函数b varobj={name:'onepixel'}
4、;//定义对象obj a.call();//window a.call(null);//window a.call(undefined);//window a.call(1);//Number a.call('');//String a.call(true);//Boolean a.call(b);//functionb(){} a.call(obj);//Object 这是call的核心功能,它允许你在一个对象上调用该对象没有定义的方法,并且这个方法可以访问该对象中的属性,至于这样做有什么好处,我待会再讲,我们
5、先看一个简单的例子: vara={ name:'onepixel',//定义a的属性 say:function(){//定义a的方法 console.log("Hi,I'mfunctiona!"); } }; functionb(name){对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解
6、console.log("Postparams:"+name); console.log("I'm"+this.name); this.say(); } b.call(a,'test'); >> Postparams:test I'monepixel I'mfunctiona! 当执行b.call时,字符串`test`作为参数传递给了函数b,由于call的作用,函数b中的this指向了对象a,因此相当于调用了对象a上的函数b,而实际上a中没有定义b。 apply(thisArgs[,args[]]) ap
7、ply和call的唯一区别是第二个参数的传递方式不同,apply的第二个参数必须是一个数组,而call允许传递一个参数列表。值得你注意的是,虽然apply接收的是一个参数数组,但在传递给调用函数时,却是以参数列表的形式传递,我们看个简单的例子: functionb(x,y,z){ console.log(x,y,z); } b.apply(null,[1,2,3]);//123对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学
8、习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 apply的这个特性很重要,我们会在下面的应用场景中提到这个特性。 bind(thisArgs[,args...]) b