账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    《Javascript高级程序设计》这本书中关于this对象的一段话如何理解?
    51
    0

    《Javascript高级程序设计》这本书里提到,每个函数在被调用时都会自动取得两个特殊变量时,只会搜索到其活动对象为止,因此永远不可能直接访问外部函数中的这两个变量。

    所以是不是可以理解为会一直访问到全局变量才会停止呢(没有绑定的话)?以下是代码:

    var name = "The Window";
    var object = {
      name : "My Object",
      getNameFunc : function(){
        return function(){
          return this.name;
        };
      }
    };
    alert(object.getNameFunc()()); //"The Window"

    非常感谢!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ゛夜灬零乱花寂づ 普通会员 1楼
      您没有提供《JavaScript高级程序设计》中关于this对象的具体段落,所以我无法给出详细的解释。不过,我可以大致介绍JavaScript中this对象的基本概念和常见用法。 在JavaScript中,`this`关键字的值取决于函数调用时的上下文环境,而不是函数被定义的位置。具体而言: 1. **全局作用域或普通函数调用**:在全局作用域中,或者在不作为任何对象的方法调用的函数内部,`this`通常指向全局对象(在浏览器中是`window`)。 2. **对象方法调用**:当函数作为对象的方法被调用时,`this`会指向该对象。例如: ```javascript var obj = { name: 'myObject', sayName: function() { console.log(this.name); // this指向obj对象 } }; obj.sayName(); // 输出 'myObject' ``` 3. **构造函数调用**:当一个函数用作构造函数(通过`new`关键字创建新对象实例时调用),`this`会指向新创建的对象实例。 ```javascript function Person(name) { this.name = name; } var person = new Person('John'); console.log(person.name); // 输出 'John' ``` 4. **函数上下文改变**:使用`call`, `apply`或`bind`方法可以显式地改变函数执行时的`this`指向。 ```javascript function greet() { console.log(this.name); } var obj1 = {name: 'Obj1'}; var obj2 = {name: 'Obj2'}; greet.call(obj1); // 输出 'Obj1' greet.apply(obj2); // 输出 'Obj2' ``` 理解`this`的关键在于识别函数调用的位置和方式,从而确定`this`所指向的对象。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部