www.qjdy.com-奇迹赌场 > www.qjdy.com > this一般指向的是当前被调用者

原标题:this一般指向的是当前被调用者

浏览次数:71 时间:2019-07-11

this是javascript的贰个最主要字,随着函数使用场地差别,this的值会发生变化。不过总有三个原则,那便是this指的是调用函数的不得了指标。

this一般针对的是日前被调用者,但也得以透过别的措施来退换它的指向,上边将介绍二种情势:

1.call用作承接时:

function Parent(age){
this.name=['mike','jack','smith'];
this.age=age;
}
function Child(age){
Parent.call(this,age);//把this指向Parent,同时还可以传递参数
}
var test=new Child(21);
console.log(test.age);//21
console.log(test.name);
test.name.push('bill');
console.log(test.name);//mike,jack,smith,bill

2.call和apply都得以变动this指向,不过apply的第贰个参数是散列遍布,call则足以是一个数组

console.log(Math.max.apply(null,[1,2,3,4]));//4

apply() 方法接收八个参数:贰个是在里面运维函数的效用域,另二个是参数数组。当中,第贰个参数能够是 Array 的实例,也能够是arguments 对象。call() 方法与 apply() 方法的职能一样,它们的不相同仅在于接收参数的格局分化。对于 call()
艺术来说,第一个参数是 this 值没有转换,变化的是其他参数都直接传送给函数。换句话说,在行使call() 方法时,传递给函数的参数必须每种列举出来。

3.ES5还定义了贰个形式:bind(),它会创设一个函数的实例,其this值会被绑定到传给bind()函数的值。如

window.color='red';
var o={color:'blue'};

function sayColor(){
console.log(this.color);
}
var objectSaycolor=sayColor.bind(o);
//var objectSaycolor=sayColor.bind();
objectSaycolor();//blue

在此处sayColor()调用bind()并传到对象o,创造了objectSayColor()函数。objectSayColor()函数的this值等于o,因而就算是在大局成效域中调用那么些函数,也拜望到blue。

如上所述是小编给我们介绍的JS中退换this指向的点子(call和apply、bind),希望对大家以上扶持!

上边还会有一点时间给大家补充点基础知识有关:call()与apply()差异

一、方法的定义

call方法:

语法:call(thisObj,Object)

概念:调用一个对象的贰个办法,以另一个目的替换当前指标。

说明:

call 方法可以用来代替另二个指标调用三个方法。call 方法可将一个函数的对象上下文从初阶的上下文改换为由 thisObj 钦定的新对象。

要是未有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

apply方法:

语法:apply(thisObj,[argArray])

概念:应用某一目的的二个措施,用另一个目的替换当前指标。

说明:

即使 argArray 不是三个可行的数组也许不是 arguments 对象,那么将招致八个TypeError。
一经未有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被作为 thisObj, 並且无法被传送任何参数。

代码示例:

function Animal(name) {
   this.name = name;
   this.showName = function() {
     console.log(this.name);
   };
 }
 function Cat(name) {
   Animal.call(this, name);
 }
 Cat.prototype = new Animal();
 function Dog(name) {
   Animal.apply(this, name);
 }
 Dog.prototype = new Animal();
 var cat = new Cat("Black Cat"); //call必须是object
 var dog = new Dog(["Black Dog"]); //apply必须是array
 cat.showName();
 dog.showName();
 console.log(cat instanceof Animal);
 console.log(dog instanceof Animal);

模拟call, apply的this替换

 function Animal(name) {
   this.name = name;
   this.showName = function() {
     alert(this.name);
   };
 };
 function Cat(name) {
   this.superClass = Animal;
   this.superClass(name);
   delete superClass;
 }
 var cat = new Cat("Black Cat");
 cat.showName();

你恐怕感兴趣的稿子:

  • js中的this关键字详解
  • javascript this用法小结
  • JS中的this变量的施用介绍
  • javascript中this的多样用法
  • 退换javascript函数内部this指针指向的三种办法
  • JS函数this的用法实例分析
  • Javascript对象中有关setTimeout和setInterval的this介绍
  • Javascript this指针
  • js原生态函数中使用jQuery中的 $(this)无效的缓和办法
  • this,this,再度商讨javascript中的this,超周全(精湛)
  • JavaScript中this关键字用法实例剖判

本文由www.qjdy.com-奇迹赌场发布于www.qjdy.com,转载请注明出处:this一般指向的是当前被调用者

关键词: GD视讯直播

上一篇:to表示要验证的元素的name值

下一篇:没有了