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 相关文章推荐
深入理解JavaScript系列(12) 变量对象(Variable Object)
Jan 16 Javascript
jQuery基础语法实例入门
Dec 23 Javascript
异步JavaScript编程中的Promise使用方法
Jul 28 Javascript
jquery动感漂浮导航菜单代码分享
Apr 15 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
Jan 16 Javascript
微信小程序scroll-view实现字幕滚动
Jul 14 Javascript
详解微信小程序获取当前时间及日期的方法
Apr 28 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
May 20 Javascript
微信打开网址添加在浏览器中打开提示的办法
May 20 Javascript
使用zrender.js绘制体温单效果
Oct 31 Javascript
微信小程序如何加载数据库真实数据的实现
Mar 04 Javascript
详解React 元素渲染
Jul 07 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 无极分类(递归)实现代码
2010/01/05 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
javascript document.images实例
2008/05/27 Javascript
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
javascript如何创建对象
2016/08/29 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
详解Python中的序列化与反序列化的使用
2015/06/30 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
将python代码和注释分离的方法
2018/04/21 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
关于逃课的检讨书
2014/01/23 职场文书
社团活动总结模板
2014/06/30 职场文书
离婚案件被告代理词
2015/05/23 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript