深入浅析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 相关文章推荐
js 获取页面高度和宽度兼容 ie firefox chrome等
May 14 Javascript
javascript cookie的简单应用
Feb 24 Javascript
基于javascript实现句子翻牌网页版小游戏
Mar 23 Javascript
JS组件Bootstrap实现下拉菜单效果代码
Apr 26 Javascript
AngularJS延迟加载html template
Jul 27 Javascript
Mac下使用charles遇到的问题以及解决办法
Jan 10 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
May 26 Javascript
Javasript设计模式之链式调用详解
Apr 26 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
Jan 04 Javascript
VUE实现图片验证码功能
Nov 18 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
Nov 04 Javascript
Vue 一键清空表单的实现方法
Feb 07 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
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
使用php计算排列组合的方法
2013/11/13 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
jquery 插件学习(六)
2012/08/06 Javascript
关于js new Date() 出现NaN 的分析
2012/10/23 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
django认证系统 Authentication使用详解
2019/07/22 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
介绍一下常见的木马种类
2014/11/15 面试题
中介业务员岗位职责
2014/04/09 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
物业公司管理制度
2015/08/05 职场文书
2019 入党申请书范文
2019/07/10 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python
Python socket如何解析HTTP请求内容
2022/02/12 Python
nginx常用配置conf的示例代码详解
2022/03/21 Servers
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏