深入浅析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 相关文章推荐
jquery 选择器部分整理
Oct 28 Javascript
Jquery getJSON方法详细分析
Dec 26 Javascript
javascript内置对象arguments详解
Mar 16 Javascript
用于deeplink的js方法(判断手机是否安装app)
Apr 02 Javascript
JS判断变量是否为空判断是否null
Jul 25 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
Aug 17 Javascript
使用NestJS开发Node.js应用的方法
Dec 03 Javascript
JSON.stringify()方法讲解
Jan 31 Javascript
vue计算属性computed的使用方法示例
Mar 13 Javascript
用Vue编写抽象组件的方法
May 06 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
Jan 08 Javascript
vue+iview实现文件上传
Nov 17 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反射类ReflectionClass用法分析
2016/05/12 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
jQuery对val和atrr("value")赋值的区别介绍
2014/09/26 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
python自动重试第三方包retrying模块的方法
2018/04/24 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
python3对接mysql数据库实例详解
2019/04/30 Python
pytorch 修改预训练model实例
2020/01/18 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
Python tcp传输代码实例解析
2020/03/18 Python
详解python如何引用包package
2020/06/07 Python
keras多显卡训练方式
2020/06/10 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
面料业务员岗位职责
2013/12/26 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
CSS3实现指纹特效代码
2022/03/17 HTML / CSS