美文网首页
js中的this到底是谁

js中的this到底是谁

作者: 朝文天下 | 来源:发表于2016-02-27 12:11 被阅读36次

js中函数的4中调用方式

1作为普通函数来调用,this的值指向window,准确的说this为null,但是被解释成了window,但是在ECMA5标准中把null解释成了undefined


function foo(){
  console.log(this.age);
}

foo();

2作为对象的方法来调用,this指向调用那一刻的调用者obj,也就是该对象

 
 var obj={
    xx:999,
    yy:888,
    t:function(){
        alert(this.xx);//相当于obj.xx
    }
 };
obj.t();//999


/*关于调用“那一刻”的例子,虽然原来是obj在调用,
但是在dog.t=obj.t后,调用者成了dog,所以此时this指向了dog
*/
var dog ={
    xx:'huzi'
};

dog.t=obj.t;
dog.t();//huzi

3作为构造函数调用时,也就是声明对象,因为在js中没有类的概念,创建对象是用构造函数来完成的,或者直接用json 来写对象。
形成1个空对象constructor,也就是{};
this指向该空对象



function Animal(name.age){
    this.name = name;
    this.age =  age;
    this.bark:function(){
        console.log('i am'+this.name+'!');
    }
/*this.bark中的this指向空对象constructor,但
    是console中的this指向谁还不知道,因为此时还没有
    调用者
*/
}
var dog = new Animal('huzi',5);//形成对象的一个实例,this此时指向了dog
dog.bark()//i am huzi

.函数作为构造函数时,return的值是忽略的,还是返回对象,
它绑定的this指向新创建的对象,并默认返回对象(this),也就是说,不需要在最后写return this;。

4 函数被call,apply调用时

'函数名.call(对象,参数1,参数2)'
function t(num){
    console.log('我的真实年龄是' + this.age);
    console.log('但我一般告诉别人我的年龄' + (this.age+num);

}
 
 var zhangsan = {
    'name':'zhangsan',
    'age':30
 }
 t.call(zhangsan,5);
 /*
 首先,函数t中的this指向对象(zhangsan);
 然后,运行t(参数1,参数2……参数n);
 这个就是对象冒充

  */


相关文章

  • js中的this到底是谁

    js中函数的4中调用方式 1作为普通函数来调用,this的值指向window,准确的说this为null,但是被解...

  • 浅析JS中的this

    JS 中的this到底是什么 首先说结论: fn.call (context,argument[]) ,this ...

  • JS中Function和Object的关系

    JS中到底谁从属于谁? Function instanceOf Function //true Function ...

  • 认识你自己

    到底是谁 埋怨着你 到底是谁 惹怒了你 到底是谁 伤害了你 到底是谁 囚禁着你 到底是谁 让你懊恼不已 到底是谁 ...

  • [js]一招教你掌握this指向

    关于 This 它是JS关键字,在JS中具有特殊意义,代表一个空间地址; this是执行的主体,谁执行的这个函数谁...

  • 高级1 对象-原型

    什么是 JS 原型链? this 的值到底是什么? JS 的 new 到底是干什么的? 你怎么还没搞懂 this?...

  • JS知识点

    new 这么一个东西,在 js 中到底是 做了哪些事情。简单来讲 js 在new 的过程中只做了三件事 1.创建一...

  • js中THIS指向汇总

    /* * JS中的THIS汇总 THIS:当前方法执行的主体(谁执行的这个方法,那么THIS就是谁,所以THIS和...

  • 3个点让你彻底搞懂this

    很多同学搞不清楚js里面的this 到底是谁?搞不清楚this到底如何使用呢?,今天给大家总结了this的用法。 ...

  • 3个点让你彻底搞懂javascript this

    很多同学搞不清楚js里面的this 到底是谁?搞不清楚this到底如何使用呢?,今天给大家总结了this的用法。 ...

网友评论

      本文标题:js中的this到底是谁

      本文链接:https://www.haomeiwen.com/subject/lwpwkttx.html