- 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`所指向的对象。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
