深入浅析javascript函数中with


Posted in Javascript onOctober 28, 2018

/*js函数中with函数的用法分析

定义 方便用来引用某个对象中已有的属性

但是不能用来给对象添加属性 要给对象创建

新的属性 必须明确的引用该对象*/

代码格式

with(object)
 statements

 object:新的默认对象

statements:一个或多个语句 oject是该语句的默认对象

with 语句通常用来缩短特定情形下必须写的代码量。

x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10) y = Math.tan(14 * Math.E)
 with (Math){ x = cos(3 * PI) + sin (LN10) y = tan(14 * E)}
 function valiadate_reauired

简单的来说就是with相当于一种速写方式 在指定的代码区域,通过节点名称就能调用对象

 普通写法:

var car={
 size: suv,
 color:yellow,
 money:1500
 };

其他类调用

function={
 car car =new car();
 car.size=suv;
 car.color=yellow;
 car.money=1500;
 }

使用with的写法:省去了car.

with(car){
size=suv;
 color=yellow;
 money=1500; 
 }

使用with语句关联了car对象,解析时 with代码块的内部把每个变量都认为是局部变量;

如果局部变量里与car对象属性(例如size)属性同名,这个局部变量就会指向car里面的属性;

 缺点1

 with会自动在全局作用域创建一个全局变量,在严格模式下,会抛出ReferenceError 异常。

withwith 会在运行时修改或创建新的作用域,以此来欺骗其他在书写时定义的词法作用域。

 缺点2

 with在相同条件下比不使用它慢了很多,具体的原因是因为js在运行之前要进行预编译,其中有些优化依赖于能够根据代码的词法进行静态分析,并预先确定所有变量和函数的定义位置,才能在执行过程中快速找到标识符。 

但如果引擎在代码中发现了 with,它只能简单地假设关于标识符位置的判断都是无效的,因为无法知道传递给 with 用来创建新词法作用域的对象的内容到底是什么。所以js就不会优化

 总结

以上所述是小编给大家介绍的javascript函数中with,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
一个简单的JavaScript数据缓存系统实现代码
Oct 24 Javascript
javascript常用对话框小集
Sep 13 Javascript
js控制鼠标事件移动及移出效果显示
Oct 19 Javascript
jQuery插件bxSlider实现响应式焦点图
Apr 12 Javascript
浅析如何利用JavaScript进行语音识别
Oct 27 Javascript
Vue.js自定义指令的用法与实例解析
Jan 18 Javascript
Vue递归实现树形菜单方法实例
Nov 06 Javascript
vuex的module模块用法示例
Nov 12 Javascript
Vuex中的State使用介绍
Jan 19 Javascript
了解前端理论:rscss和rsjs
May 23 Javascript
angular异步验证防抖踩坑实录
Dec 01 Javascript
JS跨浏览器解析XML应用过程详解
Oct 16 Javascript
微信小程序动画(Animation)的实现及执行步骤
Oct 28 #Javascript
又拍云 Node.js 实现文件上传、删除功能
Oct 28 #Javascript
javascript中函数的写法实例代码详解
Oct 28 #Javascript
vue项目中实现图片预览的公用组件功能
Oct 26 #Javascript
Node.js 使用axios读写influxDB的方法示例
Oct 26 #Javascript
vue中使用protobuf的过程记录
Oct 26 #Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
Oct 26 #Javascript
You might like
COM in PHP (winows only)
2006/10/09 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
jQuery timers计时器简单应用说明
2010/10/28 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
2018/11/13 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
JS实现吸顶特效
2020/01/08 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
Python标准库之循环器(itertools)介绍
2014/11/25 Python
Python 序列的方法总结
2016/10/18 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
车祸赔偿收入证明
2014/01/09 职场文书
老人祝寿主持词
2014/03/28 职场文书
英语教师求职信范文
2015/03/20 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang
python获取带有返回值的多线程
2022/05/02 Python