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 tools 系列 scrollable(2)
Sep 06 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
Mar 28 Javascript
JavaScript中判断对象类型的几种方法总结
Nov 11 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
Jul 24 Javascript
Bootstrap源码解读模态弹出框(11)
Dec 28 Javascript
在javaScript中检测数据类型的几种方式小结
Mar 04 Javascript
详解Angular Reactive Form 表单验证
Jul 06 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
Aug 20 Javascript
实例分析编写vue组件方法
Feb 12 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
Oct 26 Javascript
微信小程序实现翻牌抽奖动画
Sep 21 Javascript
解决vue scoped html样式无效的问题
Oct 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
PHP convert_cyr_string()函数讲解
2019/02/13 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
页面点击小红心js实现代码
2018/05/26 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
Python编写电话薄实现增删改查功能
2016/05/07 Python
python目录与文件名操作例子
2016/08/28 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
大二学期个人自我评价
2014/01/13 职场文书
浪费资源的建议书
2014/03/12 职场文书
出纳担保书范文
2014/04/02 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
环保建议书作文500字
2015/09/14 职场文书
初中数学教学反思范文
2016/02/17 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL