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 相关文章推荐
JQuery中操作Css样式的方法
Feb 12 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
Apr 29 Javascript
JavaScript 消息框效果【实现代码】
Apr 27 Javascript
JavaScript_object基础入门(必看篇)
Jun 13 Javascript
详解Javascript百度地图接口开发文档中的类和方法
Feb 07 Javascript
JQuery validate 验证一个单独的表单元素实例
Feb 17 Javascript
JavaScript中undefined和null的区别
May 03 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
Dec 12 Javascript
原生JS实现的自动轮播图功能详解
Dec 28 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
Mar 11 Javascript
如何在Vue中抽离接口配置文件
Oct 31 Javascript
JavaScript设计模式之策略模式实现原理详解
May 29 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笔试题
2009/08/04 PHP
php下获取客户端ip地址的函数
2010/03/15 PHP
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
php+ajax实现异步上传文件或图片功能
2017/07/18 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
js实现文字滚动效果
2016/03/03 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
python 实现删除文件或文件夹实例详解
2016/12/04 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
python实现三次样条插值
2018/12/17 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
Html5百叶窗效果的示例代码
2017/12/11 HTML / CSS
寄语十八大感言
2014/02/07 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
Android 中的类文件和类加载器详情
2022/06/05 Java/Android