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自动将form表单封装成json的具体实现
Mar 17 Javascript
Javascript中call和apply函数的比较和使用实例
Feb 03 Javascript
封装了jQuery的Ajax请求全局配置
Feb 05 Javascript
js正则表达式验证邮件地址
Nov 12 Javascript
JavaScript中两个字符串的匹配
Jun 08 Javascript
JS制作类似选项卡切换的年历
Dec 03 Javascript
Node.js使用NodeMailer发送邮件实例代码
Mar 06 Javascript
AngularJS实现动态添加Option的方法
May 17 Javascript
get  post jsonp三种数据交互形式实例详解
Aug 25 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
Aug 29 Javascript
原生JS获取元素的位置与尺寸实现方法
Oct 18 Javascript
vue 国际化 vue-i18n 双语言 语言包
Jun 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
header()函数使用说明
2006/11/23 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
php生成图片验证码
2015/06/09 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
Python and、or以及and-or语法总结
2015/04/14 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
前台领班岗位职责
2013/12/04 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
教师远程培训感言
2014/03/06 职场文书
暑假家长评语大全
2014/04/17 职场文书
入党现实表现材料
2014/12/23 职场文书
2016国培学习心得体会
2016/01/08 职场文书
高二语文教学反思
2016/02/16 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL