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 代码的方法小结
Jul 16 Javascript
Javascript匿名函数的一种应用 代码封装
Jun 27 Javascript
jQuery之排序组件的深入解析
Jun 19 Javascript
js动态切换图片的方法
Jan 20 Javascript
JavaScript编程的单例设计模讲解
Nov 10 Javascript
Javascript删除指定元素节点的方法
Jun 21 Javascript
深入理解bootstrap框架之入门准备
Oct 09 Javascript
JS禁止查看网页源代码的实现方法
Oct 12 Javascript
validationEngine 表单验证插件使用实例代码
Jun 15 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 Javascript
微信小程序获取用户openid的实现
Dec 24 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 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/09/04 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
2016/11/18 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
Python使用filetype精确判断文件类型
2017/07/02 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
鱼油专家:Omegavia
2016/10/10 全球购物
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
机械专业个人求职自荐信格式
2013/09/21 职场文书
《草原》教学反思
2014/02/15 职场文书
《穷人》教学反思
2014/04/08 职场文书
员工生日会策划方案
2014/06/14 职场文书
走进敬老院活动总结
2014/07/10 职场文书
销售员自我评价
2015/03/11 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python