深入浅析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判断用户浏览器是否是XP SP2的IE6
Mar 08 Javascript
获取客户端电脑日期时间js代码(jquery)
Sep 12 Javascript
关于jQuery object and DOM element
Apr 15 Javascript
JS中把字符转成ASCII值的函数示例代码
Nov 21 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
Apr 11 Javascript
JQuery实现展开关闭层的方法
Feb 17 Javascript
JQuery学习总结【一】
Dec 01 Javascript
JS中关于正则的巧妙操作
Aug 31 Javascript
React如何将组件渲染到指定DOM节点详解
Sep 08 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
Dec 14 Javascript
JavaScript类型相关的常用操作总结
Feb 14 Javascript
vue实现可拖拽的dialog弹框
May 13 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
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
js获取元素在浏览器中的绝对位置
2010/07/24 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
Python isinstance函数介绍
2015/04/14 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
Python微信操控itchat的方法
2019/05/31 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
小学生自我评价范文
2014/01/25 职场文书
优秀教师的感人事迹
2014/02/04 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
公司营业员的自我评价
2014/03/04 职场文书
项目经理任命书范本
2014/06/05 职场文书
党员批评与自我批评材料
2014/10/14 职场文书
担保贷款承诺书
2015/04/30 职场文书
新闻稿标题
2015/07/18 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers