js 函数中this的指向(部分)

在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了

function Foo(){
    this.name='kkk';
    this.year=2019;
    console.log(this);//window
    console.log(this.year)//2019
}
Foo()
function Foo(){
    this.name='kkk';
    this.year=2019;
    console.log(this);  //Foo{name:'kkk',year:2019}
    console.log(this.year)//2019
}
var a=new Foo();
console.log(a.name)//'kkk'
console.log(a.year)//2019

直接调用构造函数的this与new的对象的this不一样

var obj={
    x:10,
    fn:function(){
        console.log(this);
        console.log(this.x)
    }
}

obj.fn();
//{ x: 10, fn: [Function: fn] }
//10

函数作为对象的一个属性,并且作为对象的一个属性被调用时,函数中的this指向该对象。

var obj={
    x:10,
    fn:function(){
        console.log(this);
        console.log(this.x)
    }
}

f=obj.fn;
f();
//window
//undefined

fn函数被赋值到了另一个变量中,并没有作为obj的一个属性被调用,那么this的值就是window,this.x为undefined

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,180评论 0 5
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,396评论 2 17
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,300评论 1 45
  • 首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上...
    Mr__王阅读 4,010评论 0 3
  • 国庆,虽然回家过程比较麻烦,没买到卧铺,又不舍得钱,选的硬座,人比我想象的多很多,挺难受。 当时想着回家肯定路上比...
    RamboPan阅读 1,612评论 0 0

友情链接更多精彩内容