Vue的this

一、vue编译模块

(1)模块域中导出对象域

export default {data() {return {msg: ''};}
};

A.function定义函数

I、模块导出对象的各关键字的属性值

如data的值

export default {props:['propA'},data:function() {//经Vue转换,该函数属于Vue的data赋值函数let c= this.propA;   return {c:c,msg: this.propA,     //经Vue转换,msg属于Vue实例的属性func:function(){     //经Vue转换,该函数属于Vue实例的函数return this.propA;}};}
};

此处的this都是Vue的实例

 

II、模块导出对象的属性的子属性

export default {props:['propA'},data:function() {return {msg:{     //经Vue转换,msg属于Vue实例的属性propA:'zzzz',func:function(){return this.propA;   //func是msg的成员方法}}};}
};

此处的this都是return的对象

 

III、函数中定义函数

export default {props:['propA'},data:function() {return {msg:{     //经Vue转换,msg属于Vue实例的属性propA:'zzzz',func:function(){;(function(){alert(this.propA)  //匿名函数})();}}};}
};

此处的this为undefined;由于匿名函数不属于定义对象所有,又在编译的模块中,造成window对象被屏蔽,故为undefined

 

B.lamda表达式

export default {props:['propA'},data:()=>{    //经Vue转换,该函数属于Vue的data赋值函数let c= this.propA;   //(1)return {c:c,msg: this.propA,     //(2)func:function(){     return this.propA;//(3)},func1:()=>{     return this.propA;//(4)},other:{propA:'xzxz',func2:function(){     return this.propA;//(5)},func3:()=>{     return this.propA;//(6)}};};}
};

(1)、(2)、(4)、(6)经webpack编译,将this转换为_this(此名有冲突会变化),而_this正为webpack模块的导出对象__webpack_exports__

(3)经Vue转换,该函数属于Vue实例的函数,故this指向Vue的实例

(5)中function定义没有改变this,this指向other的对象

lamda表达式函数作用域的this都是当前声明函数作用域的this

 

(2)模块域中非导出对象域

<script>
export default {data() {return {msg: ''};}
};
//模块域非导出对象的域
</script>

A、没有声明作用域

<script>
export default {};let b = function () {var ccc=b;var u = [this];try {this.a = 2;} catch (e) {u.push(e);}let c = function () {var u = [this];try {this.a = 3;} catch (e) {u.push(e);}let d = function () {var u = [this];try {this.a = 4;} catch (e) {u.push(e);}return u}return [u, d()]}return [u].concat(c());
}
//(3)
</script>

I、(3)处插入let c=b();,结果调用的this全是undefined

II、(3)处插入let c=window.b();,结果window.b为undefined

 

B、有声明作用域

<script>
export default {};window.b = function () {var ccc=b;var u = [this];try {this.a = 2;} catch (e) {u.push(e);}let c = function () {var u = [this];try {this.a = 3;} catch (e) {u.push(e);}let d = function () {var u = [this];try {this.a = 4;} catch (e) {u.push(e);}return u}return [u, d()]}return [u].concat(c());
}
//(3)
</script>

I、(3)处插入let c=b();,调用结果的this全是undefined

II、(3)处插入let c=window.b();,调用结果的this,第一个为window,其他的是undefined

 

二、Vue非编译模块

与vue编译模块类似,不同的是:

(1)function定义函数

vue编译模块的this的值为undefined,在vue非编译模块中全为window

(2)lamda表达式

lamda表达式中的this为父级的this,其中顶级的this为window

define(function () {var template =`<div>aaa</div>`;let component = {template: template,data:()=>{let that=this;//windowreturn {};}};return component;
});

 

 

 

 

 

 

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

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

相关文章

如何用TypeScript开发微信小程序

微信小程序来了&#xff01;这个号称干掉传统app的玩意儿虽然目前处于内测阶段&#xff0c;不过目前在应用号的官方文档里已经放出了没有内测号也能使用的模拟器了。 工具和文档可以参考官方文档&#xff1a;https://mp.weixin.qq.com/debug/wxadoc/dev/?t1477926804193 Type…

Axios实现异步通信

Axios异步通信(通信框架) <!--导入axios--> <script src"https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.min.js"></script>Axios是一个开源的可以用在浏览器端和NodeJS 的异步通信框架&#xff0c;她的主要作用就是实现AJAX异步通信&…

Java IO: InputStream

转载自 Java IO: InputStream译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) InputStream类是Java IO API中所有输入流的基类。InputStream子类包括FileInputStream&#xff0c;BufferedInputStream&#xff0c;PushbackInputStream等等。参考Java IO概述这…

检查异常和非检查异常 有空你去学一下检查异常和非检查异常

https://blog.csdn.net/weixin_39220472/article/details/81056647 Java检查异常和非检查异常,运行时异常和非运行时异常的区别 灰太狼_cxh 2018-07-15 20:51:31 7131 收藏 17 展开 通常&#xff0c;Java的异常(包括Exception和Error)分为 检查异常&#xff08;checked exce…

php 向html追加元素,在PHP中存储兄弟元素的属性和内部HTML

我试图从HTML页面中搜索和存储值,所以我有一个简单的数组数组。它只有2个数组,每个数组有3个项目长。我是这样定义的;这些只是标题:$fileContents array(array(Date, Title, Link));HTML具有以下结构:06/08/2018My Title 这个结构重复几次。我只需要上面的第一个(最新的)。我可…

八幅漫画理解使用JSON Web Token设计单点登录系统

上次在《JSON Web Token - 在Web应用间安全地传递信息》中我提到了JSON Web Token可以用来设计单点登录系统。我尝试用八幅漫画先让大家理解如何设计正常的用户认证系统&#xff0c;然后再延伸到单点登录系统。 如果还没有阅读《JSON Web Token - 在Web应用间安全地传递信息》&…

Java IO: OutputStream

转载自 Java IO: OutputStream译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) OutputStream类是Java IO API中所有输出流的基类。子类包括BufferedOutputStream&#xff0c;FileOutputStream等等。参考Java IO概述这一小节底部的表格&#xff0c;可以浏览…

pg和oracle比较,Oracle与PostgreSQL使用差异对比与总结

JDBC连接&#xff1a;Oracle的jdbc连接字符串&#xff1a;db.urljdbc:oracle:thin:192.168.1.1:1521:ORCLPostgresql的连接字符串&#xff1a;db.urljdbc:postgresql:192.168.1.1:5432/database1、基本数据类型差异OraclePostgreSQLVarchar2varcharnumbernumericdatetimestamp/…

hibernate+struts2整合jar包冲突

前几天&#xff0c;在用HibernateStruts2做项目的时候遇到了一个很棘手的问题&#xff0c;jar包冲突&#xff01;&#xff01;&#xff01;先亮一下错误&#xff1a; 之前还不知道这是个啥错误&#xff0c;经过上网查找之后才知道这是jar包冲突的问题&#xff01;&#xff01;由…

在ASP.NET Core中实现一个Token base的身份认证

以前在web端的身份认证都是基于Cookie | Session的身份认证, 在没有更多的终端出现之前&#xff0c;这样做也没有什么问题&#xff0c;但在Web API时代&#xff0c;你所需要面对的就不止是浏览器了&#xff0c;还有各种客户端&#xff0c;这样就有了一个问题&#xff0c;这些客…

Java IO: FileInputStream

转载自 Java IO: FileInputStream译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) FileInputStream可以以字节流的形式读取文件内容。FileInputStream是InputStream的子类&#xff0c;这意味着你可以把FileInputStream当做InputStream使用(FileInputStream与…

Java获取指定月份的最后一天

https://blog.csdn.net/itmyhome1990/article/details/85619804 Java获取指定月份的最后一天 麦田 2019-01-02 17:43:38 8036 收藏 1 展开 import java.text.SimpleDateFormat; import java.util.Calendar; public class DUtil { public static String getLastDayOfMon…

php 运算器,运算器的功能是什么

运算器的功能是加、减、乘、除四则运算&#xff0c;与、或、非、异或等逻辑操作&#xff0c;以及移位、比较和传送等操作&#xff0c;运算器的处理对象是数据&#xff0c;所以数据长度和计算机数据表明方法&#xff0c;对运算器的性能影响极大。本文操作环境&#xff1a;Window…

同步外部接口数据的一些记录和分享

https://blog.csdn.net/jsnhux/article/details/80116921 https://blog.csdn.net/jsnhux/article/details/80116921 同步外部接口数据的一些记录和分享 灵葱 2018-04-28 10:03:49 2086 收藏 1 展开 1、spring boot之定时器任务 Component public class JobScheduler { pro…

.NET Standard 2.0:整齐划一的目标

在两个月前公布.NET Standard 2.0时&#xff0c;微软认为新版标准的目标在于为现有的三个主要.NET平台&#xff1a;.NET Framework、.NET Core&#xff0c;以及Xamarin提供一个坚实的底层基础&#xff0c;并为未来满足树莓派或IoT等全新类型设备需求可能需要创建的分支提供支持…

vue中路径带# vs 不带#

路由模式有两种 hash&#xff1a;路径带 # 符号&#xff0c;如 http://localhost/#/loginhistory&#xff1a;路径不带 # 符号&#xff0c;如 http://localhost/login 修改路由配置&#xff0c;代码如下&#xff1a; export default new Router({mode: history,routes: [] }…

centos7离线安装oracle11g,CentOS 7.5离线安装Oracle 11gR2

操作系统&#xff1a;CentOS 7.5 64bit&#xff0c;安装方式为gnome Desktop&#xff0c;附加系统工具以及兼容X Window安装包Oracle版本&#xff1a;11gR2Oracle11gR2官方文档链接安装系统建立默认用户的时候建立非oracle的账号。由于是离线安装&#xff0c;使用ssh登录&#…

Java IO: FileOutputStream

转载自 Java IO: FileOutputStream译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) FileOutputStream可以往文件里写入字节流&#xff0c;它是OutputStream的子类&#xff0c;所以你可以像使用OutputStream那样使用FileOutputStream。 这是一个FileOutputStr…

Struts文件上传与下载详解_上传单个文件

大家都知道Servlet上传文件的时候用的是commons-fileupload插件上传的&#xff0c;但是过程极其的麻烦&#xff0c;同样Struts2也有自带的文件上传&#xff0c;但是过程比Servlet里面的简单了不少&#xff0c;接下来请大家看演示&#xff1a; 我们现在先建一个表单用于上传文件…