深入浅析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 相关文章推荐
IE 当eval遇上function的处理
Aug 09 Javascript
js 代码优化点滴记录
Feb 19 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 Javascript
jquery根据name属性查找的小例子
Nov 21 Javascript
JavaScript设计模式之策略模式实例
Oct 10 Javascript
JavaScript通过select动态更换图片的方法
Mar 23 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
Sep 18 Javascript
JavaScript实现打印星型金字塔功能实例分析
Sep 27 Javascript
图片加载完成再执行事件的实例
Nov 16 Javascript
微信小程序 确认框的实现(附代码)
Jul 23 Javascript
解决vue项目,npm run build后,报路径错的问题
Aug 13 Javascript
vue 动态创建组件的两种方法
Dec 31 Vue.js
微信小程序动画(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
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
PHP代码加密的方法总结
2020/03/13 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
javascript iframe编程相关代码
2009/12/28 Javascript
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python读取键盘输入的2种方法
2015/06/16 Python
Python多线程爬虫简单示例
2016/03/04 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
transform python环境快速配置方法
2018/09/27 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
Python字符串的修改方法实例
2019/12/19 Python
python调用摄像头的示例代码
2020/09/28 Python
前端制作动画的几种方式(css3,js)
2016/12/12 HTML / CSS
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
个人自我评价和职业目标
2014/01/24 职场文书
中式面点餐厅创业计划书
2014/01/29 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
怎样写离婚协议书
2015/01/26 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技