JS容易犯错的this和作用域

 

var someuser = {
    name: 'byvoid',
    func: function() {
        console.log(this.name);
    }
};
var foo = {
    name: 'foobar'
};
someuser.func(); // 输出 byvoid
foo.func = someuser.func;
foo.func(); // 输出 foobar
name = 'global';
func = someuser.func;
func(); // 输出 global

 

在 JavaScript 中,上下文对象就是 this 指针,即被调用函数所处的环境。上下文对象 的作用是在一个函数内部引用调用它的对象本身。
在 JavaScript 中,本质上,函数类型的变量是指向这个函数实体的一个引用,在引用之 间赋值不会对对象产生复制行为。我们可以通过函数的任何一个引用调用这个函数,不同之 处仅仅在于上下文。
仔细观察上面的例子,使用不同的引用来调用同一个函数时,this 指针永远是这个引用所属的对象

 

var scope = 'top';
var f1 = function() {
    console.log(scope);
};
f1(); // 输出 top
var f2 = function() {
    var scope = 'f2';
    f1();
};
f2(); // 输出 top

 函数作用域的嵌套关系是定义时决定的,而不是调用时决定的,也就 是说,JavaScript 的作用域是静态作用域,又叫词法作用域,这是因为作用域的嵌套关系可 以在语法分析时确定,而不必等到运行时确定

转载于:https://www.cnblogs.com/zhouguoshuai/p/8074428.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【原创】Linux安装Redis

【注】说是原创其实是从各个博客中copy出来的,不过经本人总结,也算是半个原创吧,哈哈... 1.安装环境: 2.安装步骤 2.1 安装目录 cd /usr/local mkdir redis 2.2 下载包 wget http://download.redis.io/releases/redis-3.2.11.tar…

前端:屏蔽F12审查元素,禁止修改页面代码

一、屏蔽F12 审查元素 document.onkeydown function(){if(window.event && window.event.keyCode 123) {alert("F12被禁用");event.keyCode0;event.returnValuefalse; } if(window.event && window.event.keyCode 13) {window.event.keyCode 50…

SDN第四次作业

ryu控制器 ryu架构清晰,支持OpenFlow全部版本,采用Python语言进行APP开发。其上层为OpenStack和Web提供了编程接口,中间为Ryu自行研发的应用组件,最下层为Ryu底层实现的基本组件。 onos控制器 onos是面向运营商网络的SDN操作系统,采用java语言…

resteasy_RESTEasy教程第2部分:Spring集成

resteasyRESTEasy提供了对Spring集成的支持&#xff0c;这使我们能够将Spring bean作为RESTful WebServices公开。 步骤&#xff03;1&#xff1a;使用Maven配置RESTEasy Spring依赖项。 <project xmlnshttp:maven.apache.orgPOM4.0.0 xmlns:xsihttp:www.w3.org2001XMLSche…

前端代码加密

虽然浏览器会把加密的代码破解在解析&#xff0c;但是还是可以稍微加密&#xff0c;或者人家就是破解不了呢哈哈哈哈&#xff01;&#xff01;&#xff01; 1、脚本之家 推荐&#xff1a;HTML原代码加、解密脚本 https://www.jb51.net/tools/html_jiami.htm CSS代码格式化和…

原型链继承

转载于:https://www.cnblogs.com/cmblog/p/8079773.html

清洁责任–摆脱均等,compareTo和toString

您是否看过Java中Object类的javadoc&#xff1f; 大概。 您倾向于时不时地到达那里&#xff0c;然后沿着继承树进行挖掘。 您可能已经注意到的一件事是&#xff0c;每个类都必须继承许多方法。 实现自己而不是坚持使用原始方法的最喜欢的方法可能是.toString&#xff08;&#…

密码保护

1.更新User对象&#xff0c;设置对内的_password class User(db.Model): __tablename__ user _password db.Column(db.String(200), nullableFalse) #内部使用 2.编写对外的password from werkzeug.security import generate_password_hash, check_password_hash property d…

linux 安装wdcp控制面板

**wdCP是WDlinux Control Panel的简称,**是一套通过WEB控制和管理服务器的Linux服务器管理系统以及虚拟主机管理系统。 可以查看服务器情况,资源利用率,系统负载,内存使用率,带宽使用率&#xff1b; 可以轻松创建网站,开站点,发布网站,创建FTP,创建mysql数据库&#xff1b; 可以…

9.proc目录下的文件和目录详解

1./proc目录下的文件和目录详解 /proc:虚拟目录.是内存的映射,内核和进程的虚拟文件系统目录,每个进程会生成1个pid&#xff0c;而每个进程都有1个目录. /proc/Version:内核版本 /proc/sys/kernel:系统内核功能 /proc/sys/net/ipv4: /proc/meminfo:系统内存信息,free -m /proc/…

java线程死锁_Java线程死锁–案例研究

java线程死锁本文将描述从在IBM JVM 1.6上运行的Weblogic 11g生产系统中观察到的最新Java死锁问题的完整根本原因分析。 此案例研究还将证明掌握线程转储分析技能的重要性&#xff1b; 包括用于IBM JVM Thread Dump格式。 环境规格 – Java EE服务器&#xff1a;Oracle Weblo…

JS实现禁止浏览器后退返回上一页

<script type"text/javascript"> $(function() {//防止页面后退history.pushState(null, null, document.URL);window.addEventListener(popstate, function () {history.pushState(null, null, document.URL);});}) </script>

网页中文乱码--UTF-8和GB2312互转

一、如果你想把utf-8转为GB2312 1、用记事本打开源码&#xff0c;把换成&#xff1b;如果是JS不需要加这句&#xff0c;如果是网页最好加上这句和你页面对应的编码。 2、用记事本打开源码&#xff0c;另存为&#xff0c;编码 哪里选择 ANSI 即可。 二、如果你想把GB2312转为…

将JAR依赖项添加到Eclipse插件Maven Tycho构建

开发OPP项目时&#xff0c;一直困扰着我的是使用硬编码Java库依赖项。 我手动下载了所用库的jar &#xff0c;将其复制到需要它们的插件中的目录中&#xff0c;然后将其添加到MANIFEST.MF文件中。 您可能会问我为什么要这样做。 好吧&#xff0c;Eclipse插件&#xff08;或更正…

如何查看一个网站是否部署了SSL证书?

如何才能确定一个网站是否部署了安全的SSL证书呢&#xff1f; 答&#xff1a;能用https方式访问的站点 如果此网站部署SSL证书&#xff0c;则在需要加密的页面会自动从 http:// 变为 https:// &#xff0c;如果没有变&#xff0c;你认为此页面应该加密&#xff0c;您也可以尝试…

页面加载时模块移入动画---wow

首先官网下载&#xff1a;https://github.com/matthieua/WOW animate.css wow.js 1&#xff0c;在头部引用animate.css <link rel"stylesheet" href"css/animate.css">2&#xff0c;body底部引入wow.js 且初始化一下 <script src"js/wow.…

人工智能的概念和知识构架_概念验证:玩! 构架

人工智能的概念和知识构架我们正在开始一个新项目&#xff0c;我们必须选择Web框架。 我们的默认选择是grails&#xff0c;因为团队已经拥有使用它的经验&#xff0c;但是我决定给Play&#xff01; 和Scala有机会。 玩&#xff01; 有很多很酷的东西&#xff0c;在我的评估中&a…

团队-科学计算器-模块测试过程

项目托管平台地址&#xff1a;https://gitee.com/mamamayun/KeXueJiSuanQia/tree/master/calculator_soul3.5 模块测试:进行加减乘除运算 测试方法:反复进行计算 其他补充说明: 无 转载于:https://www.cnblogs.com/dunianze/p/8092874.html

linux 系统安装mongodb数据库---方法2

我是安装在/home/mongodb 1&#xff0c;进入/home/mongodb wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.7.tgz tar -zxvf mongodb-linux-x86_64-4.0.7.tgz cd mongodb-linux-x86_64-4.0.7/ 创建两个目录 存放数据库和日记 mkdir -p logs mkdir -p dat…

网络排错命令工具

ping tracert nslookup dig netstat 转载于:https://www.cnblogs.com/changha0/p/8111134.html