Vue js with语句原理及用法解析


Posted in Javascript onSeptember 03, 2020

vue源码中编译部分有下面一段代码,里面用到了with:

export function generate (
 ast: ASTElement | void,
 options: CompilerOptions
): CodegenResult {
 const state = new CodegenState(options)
 const code = ast ? genElement(ast, state) : '_c("div")'
 return {
  render: `with(this){return $[code]}`,
  staticRenderFns: state.staticRenderFns
 }
}

下面详细解释一下with的用法:

js中我们常用的一种类型是对象:

let obj = {
  a:"aa",
  b:"bb",
  c:"cc"
}

而提到对象,我们要获取它中的属性值,可以使用如下方法:

// 一:
let a = obj.a
//二:
let b = ojb["b"]

取出对象中的每一个属性值,我们都需要obj....,这样无形中会输入很多次obj,那么我们如何简单的获取到它的属性值呢。

1、常规的方法:

var a = obj.a;
var b = obj.b;
var c = obj.c;

2、使用with后的方法:

with(obj){
  var a = a;
  var b = b;
  var c = c;
}

这里with括号中的值就是我们的公共对象,下面就是每个对象中的值

var qs1 = location.search.substring(1);
var hostname1 = location.hostname;
var url1 = location.href;
 
// 上面几行代码都包含了location对象,可使用with语句简写为以下形式
 
with(location){
  var qs2 = search.substring(1);
  var hostname2 = hostname;
  var url2 = href;
}

只要无疑会大大提高我们的效率。

但是凡事都有利弊,我们也不得不提提with的缺点:

由于大量使用with语句会导致性能下降,同时也会给调试代码造成困难,因此在开发大型应用程序时,不建议使用with语句

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
doctype后如何获得body.clientHeight的方法
Jul 11 Javascript
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
Apr 11 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
Jun 18 Javascript
探讨javascript是不是面向对象的语言
Nov 21 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
Sep 14 Javascript
用headjs来管理和加载js 提高网站加载速度
Nov 29 Javascript
原生js实现轮播图的示例代码
Feb 20 Javascript
React Native中NavigatorIOS组件的简单使用详解
Jan 27 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
Feb 27 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
May 14 Javascript
【js设计模式】SOLID五大设计原则
Mar 24 Javascript
Vue通过provide inject实现组件通信
Sep 03 #Javascript
Vue组件通信$attrs、$listeners实现原理解析
Sep 03 #Javascript
Vue父组件监听子组件生命周期
Sep 03 #Javascript
JavaScript 几种循环方式以及模块化的总结
Sep 03 #Javascript
Vuejs通过拖动改变元素宽度实现自适应
Sep 02 #Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
Sep 02 #Javascript
Vue 组件的挂载与父子组件的传值实例
Sep 02 #Javascript
You might like
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
json数据的列循环示例
2013/09/06 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
js实现进度条的方法
2015/02/13 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
JQueryDOM之样式操作
2019/03/27 jQuery
微信小程序实现搜索历史功能
2020/03/26 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
python中使用smtplib和email模块发送邮件实例
2014/04/22 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
python与idea的集成的实现
2020/11/20 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
中专生职业生涯规划书范文
2013/12/29 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书