context 作用域小解

context 是js 的作用域和this上下文对象的合集,对于它的理解是前端开发的重中之重

知识点

1  对象的作用域,什么时候是User对象,是时候是window全局对象?

 变量的有效范围就是作用域,分为全局作用域和局部作用域,局部作用域只有在函数内部可以访问,全局作用域在任何位置都可以访问

直接调用的方法 作用域指向该对象

通过定义变量创建的方法 作用域会指向window全局对象上

2  apply 和 call 方法的区别是什么?该怎么用?

用来改变函数this作用域的指向的方法

call 传入多个参数

self.call(1,2,3,4,5);

apply 传入数组

self.apply(context,arguments);

3 如何把作用域是 window 的方法 绑定到 User对象上?

 内置方法 Function.bind(User) ;  原理无外乎  self.apply(context,arguments);

面试题:

var User = {
  count: 1,

  getCount: function() {
    return this.count;
  }
};

console.log(User.getCount()); // 1 => User

var func = User.getCount;

console.log(func()); // undefined => Window

// 修改指向User
var func1 = User.getCount.bind(User);
console.log(func1());
// 兼容
Function.prototype.bind = Function.prototype.bind || function(context){
    var self = this;
    console.log(context); // User 作用域
    console.log(arguments); // getCount 作用域
    return function(){
        return self.apply(context,arguments);
    }
}
时间: 2025-01-08 21:08:45

context 作用域小解的相关文章

【42】android Context深度剖析

android程序和java程序的区别 Android程序不像Java程序一样,随便创建一个类,写个main()方法就能跑了,而是要有一个完整的Android工程环境,在这个环境下,我们有像Activity.Service.BroadcastReceiver等系统组件,而这些组件并不是像一个普通的Java对象new一下就能创建实例的了,而是要有它们各自的上下文环境,也就是我们这里讨论的Context.可以这样讲,Context是维持Android程序中各组件能够正常工作的一个核心功能类. Con

Context都没弄明白,还怎么做Android开发?

Activity mActivity =new Activity() 作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言,Activity本质上也是一个对象,那上面的写法有什么问题呢?估计很多人说不清道不明.Android程序不像Java程序一样,随便创建一个类,写个main()方法就能运行,Android应用模型是基于组件的应用设计模式,组件的运行要有一个完整的Android工程环境,在这个环境下,Activity

深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇)

本篇是ECMA-262-3 in detail系列的一个概述(本人后续会翻译整理这些文章到本系列(第11-19章).每个章节都有一个更详细的内容链接,你可以继续读一下每个章节对应的详细内容链接进行更深入的了解. 适合的读者:有经验的开发员,专业前端人员. 原作者: Dmitry A. Soshnikov 发布时间: 2010-09-02 原文:http://dmitrysoshnikov.com/ecmascript/javascript-the-core/ 参考1:http://ued.ctr

GLSurfaceView中GL相关资源销毁问题

1. YY下传统的GLUT框架 没有context概念,Main函数,Display,mouse,keyboarrd,reshape,这些回调函数中都可以直接调用OpenGL命令. 纹理等gl相关资源需要自己管理,及时释放.从而防止显存不足,gl资源分配失败... 2. Android GLSurfaceview gl的context作用域只局限在GLSurfaceView.Renderer的onSurfaceCreated,onSurfaceChanged,onDrawFrame 三个函数中.

碎片笔记1

-----------------------------------------------js语言--------------------------------------------------------- 一种面向对象语言需要向开发者提供四种基本能力: 封装:把相关的信息(无论数据或方法)存储在对象中的能力 聚集:把一个对象存储在另一个对象内的能力 继承:由另一个类(或多个类)得来类的属性和方法的能力 多态:编写能以多种方法运行的函数或方法的能力 由于ECMAScript支持这些要求

执行上下文

上下文的原意是 context, 作用域的原意是scope, 这两个不是一个东西. 每一个函数的调用(function invocation) 都有对应的scope 和context. scope 指的是 函数被调用的时候, 各个变量的作用区域context 指的是 current scope and its enclosing scope. 就是当前scope 和包裹它外面的scope. 如果一个变量在当前scope没找到,那么它会自底向上继续找enclosing scope 直到找到为止.很

Android UI中英文自动显示问题

最近做了一个项目,其中有个视频和图片需要添加各种水印(日期,地点,经纬度,用户ID,产品ID等)问题,而且水印还要支持中英文自动切换显示.功能设计和实现算是比较顺利.昨天测试部给了一个小Bug,那就是在英文环境下,视频预览界面水印能正常显示英文,但通过拍照所获得的图片上的水印却显示为中文!而添加水印这一块代码是完全一样的啊?问题出在哪呢? 经过反复测试,没有发现代码有明显问题.于是凭直觉,就想难道是context上下文不同有关?于是检查代码发现context确实不同,在Activity View

vue模拟携程官网的搭建

仿造携程官网 题外话: 刚开始学前端的时候,有一天看到携程官网.就希望有一天能模拟搭出来.自己拖拖拉拉的一直没整, 但是但是麻麻我终于完成了!!(曾经亲爱的同事把传送门删掉了不感谢他了 fk) 感谢叶师兄拯救了我携程携程 源码仿携程源码 目录结构 基于vue+less进行开发,配合强行在携程复制的数据搭建的网站 目录是基于vue-cli的基础下搭建的. build/config配置文件 src是主要内容(assets包括公用的js文件,css样式/components是公用组件/module是页

SpringBoot(十) Logback 配置详解

一.了解 简单地说,Logback 是一个 Java 领域的日志框架.它被认为是 Log4J 的继承人.Logback 主要由三个模块组成: logback-core logback-classic logback-access logback-core 是其它模块的基础设施,其它模块基于它构建,显然,logback-core 提供了一些关键的通用机制.logback-classic 的地位和作用等同于 Log4J,它也被认为是 Log4J 的一个改进版,并且它实现了简单日志门面 SLF4J:而