js this 作用域:全局对象 window ( var age == this.age == window.age )

这篇博客探讨了JavaScript中的全局对象`window`与`this`的关系。通过创建对象`ling`及其方法`getAge`,展示了在不加括号和加括号调用方法时,`this`的作用域变化。当`ling.getAge`被赋值给新对象`tongGetAge`后,调用`tongGetAge()`返回`undefined`,因为此时`this`指向全局作用域,全局中未定义`age`。最后强调,在全局作用域中,`this`指向`window`,全局变量等于`this`属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全局对象中的this,指的是 window 对象

创建一个对象 ling

ling.getAge  和 ling.getAge( ):

  var ling = {
        age: 26,
        getAge: function() {
            return this.age;
        }
    }

    console.log(ling.getAge);
    //不加括号
    //返回 function () { return this.age; }
    //说明 getAge 是 ling对象的一个方法(函数)

    console.log(ling.getAge());
    //加括号,就是调用函数。这里调用了ling对象的方法
    //返回 26。
  • 不加括号:ling.getAge 是一个方法(函数)。

  • 因为 getAge 是ling 对象的一个方法。结果返回:ling.getAge 是一个function

  • 加括号:ling.getAge( ) 调用了这个方法(调用函数)。

  • 结果返回:26,函数执行后的结果。此时函数中的this 作用域为 ling 这个对象。

 

 

创建新对象 tongGetAge,并把 ling.getAge 这个方法赋值给他。所以 tongGetAge 获得的是一个方法(函数)

但是,  tongGetAge( ) 调用函数时,返回undefined。

原因: tongGetAge 被赋值了一个函数 function () { return this.age; },调用该函数时,this 指向了全局作用域。此时全局作用域中没有参数 age,所以返回undefined

    var tongGetAge = ling.getAge;
    //新建tongGetAge对象,把ling.getAge 这个方法(函数)赋值给他

    console.log(tongGetAge);
    //返回 function () { return this.age; }

    console.log(tongGetAge());
    //调用函数。
    //返回undefined,
    //因为该函数内的this此时指向全局作用域,所以this.age 为未定义值

 

 


 全局 this 指的是什么?

    var tongGetAge = ling.getAge;
    //新建tongGetAge对象,把ling.getAge 这个方法(函数)赋值给他

    console.log(this.age);

    console.log(this);

此时的 this.age 为undefined.(在全局中找不到 age 参数)

this 指向了 window 对象(全局作用域)


 全局作用域 window==this

console.log(this==window);

返回结果 true 


声明全局变量 age 

调用 tongGetAge( ) 函数运行成功。

    var age=20;
    console.log(tongGetAge());
    //全局声明age值后,函数可正常调用,返回值20

返回结果:20 

 

全局声明 var age == this.age == window.age

    console.log(age==this.age);
    console.log(age==window.age);
    //检测 var 全局声明的age 全等于 this.age 和 window.age 对象

总结:新建对象从一个已有对象赋值一个方法时,新对象作用域与已有对象作用域不同时,结果也不一样;

全局作用域中,全局对象为window. 此时的this指向的也是window. 因此用var全局声明的参数,也是 window 的参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值