您的当前位置:首页正文

js作用域链中的对象访问顺序

2024-08-01 来源:化拓教育网

1、访问第一个对象是当前作用域对象,下一个对象来自外部环境,即父作用域对象。

2、下一个变量对象来自下一个包含环境,即祖父作用域对象。

以此类推,一直延续到作用域链中的最后一个对象,全局作用域对象。

实例

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

以上就是js作用域链中的对象访问顺序,希望对大家有所帮助。更多js学习指路:

推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。

化拓教育网还为您提供以下相关内容希望对您有帮助:

Js基础27:作用域

这是因为js中存在作用域的概念。作用域:作用域就是指定一个变量或者一个函数的作用范围。能在页面的任何位置都可以访问,称为 全局作用域 只能在局部(函数内)访问,称为为 局部作用域 上述代码中,a是全局变量,b是局部变量 ES5中只有函数才有作用域,所谓是局部作用域也可以叫函数作用域。作用...

Js闭包的原理(图解)

JS的作用域分两种:全局作用域、局部作用域(也可称为函数作用域)总的来说,Js作用域的一般机制就是:内部可访问外部的变量,外部无法访问内部的变量。那么这套作用域机制是如何实现的呢?答案是:通过作用域链 在Js中,每当一个函数被执行,都会产生三个对象:我们通过实例配图讲解,例如有如下 js ...

请问javascript中作用域和执行环境是不是一个概念?

执行环境:执行环境是JS中最重要的一个概念;它定义了变量和函数有权访问的其他数据;全局执行环境:最外围的一个执行环境,根据ECMAScript实现所在的宿主环境不同而不同,在Web浏览器中,全局执行环境被认为是window对象;作用域链:当代码在环境中执行时,会创建变量对象的一个作用链;作用域链的作用是...

如何提升JavaScriptWeb性能的技巧总结

document.getElementById('foo').onclick = function(ev) { };闭包的问题在于:根据定义,在它们的作用域链中至少有三个对象:闭包变量、局部变量和全局变量。这些额外的对象将会导致第1和第2个建议中提到的性能问题。但是我认为Nicholas并不是要我们因噎废食,闭包对于提高代码可读性等方面还是非常有用的,只是不要...

JS中怎样操作代码执行的先后顺序

一、js--->单线程 ??严格意义上来说,javascript没有多线程的概念,所有的程序都是单线程依次执行的。??1、什么是单线程???通俗点说,就是代码在执行过程中,另一段代码想要执行就必须等当前代码执行完成后才可以进行。我们拿一段代码来解释一下吧 for(var i=1;i<=3;i++){ setTimeout(...

面向对象中的对象上下文(对象环境)和对象作用域到底指什么意思啊?这种...

作用域:首先,在 javascript中的每个函数都是对象,是Funtion对象的一个实例,而Funtion中有一系列仅供javascript引擎存取的内部属性,其中一个便是[[scope]],它包含了一个函数被创建的作用域中对象的集合,这个集合就是函数的作用域链。当一个函数创建后,它的作用域链会被创建此函数的作用域中可访问...

javascript的闭包是什么意思 有什么用

如图所示,当在函数b中访问一个变量的时候,搜索顺序是先搜索自身的活动对象,如果存在则返回,如果不存在将继续搜索函数a的活动对象,依 次查找,直到找到为止。如果整个作用域链上都无法找到,则返回undefined。如果函数b存在prototype原型对象,则在查找完自身的活动对象 后先查找自身的原型对象,再继续...

JS全局变量是全局对象的属性,函数局部变量为什么就不是函数的属性...

根据以上理解说明JS初始化的过程: 在JS解释器执行任何代码之前,创建全局对象 用预定义的值和函数来初始化全局对象中的属性,eg.Math,Infinity,parseInt 搜索函数外的var声明,创建全局对象相应的属性,初始化为undefined 创建全局的执行环境,作用域链只有一个对象-全局对象 依次执行代码 遇到var声明赋值语句给全局对象相应...

如何确保JavaScript的执行顺序

而非我们想象中的Hello和Hello World。这是因为Javascript并非完全的按顺序解释执行,而是在解释之前会对Javascript进行一次“预编译”,在预编译的过程中,会把定义式的函数优先执行,也会把所有var变量创建,默认值为undefined,以提高程序的执行效率。也就是说上面的一段代码其实被JS引擎预编译为这样的形式...

函数被调用发生了什么?

函数被调用 执行引擎创建一个函数执行上下文环境。执行上下文环境包括变量对象,作用域链,this指针三部分。在这里为了说明问题,我们只关心 变量对象。在函数执行上下文中, 变量对象 是不能直接访问的 变量对象 包含普通参数(formal parameters) 与特殊参数(Arguments)对象(具有索引属性的参数映射表)。特殊...