深入浅析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实现运行代码需要刷新的解决方法
Aug 18 Javascript
表单切换,用回车键替换Tab健(不支持IE)
Jul 20 Javascript
Jquery 动态循环输出表格具体方法
Nov 23 Javascript
jQuery中slideUp 和 slideDown 的点击事件
Feb 26 Javascript
通过js修改input、select默认字体颜色
Apr 19 Javascript
详解Angular.js中$http拦截器的介绍及使用
Jul 04 Javascript
Angular在模板驱动表单中自定义校验器的方法
Aug 09 Javascript
Vue中之nextTick函数源码分析详解
Oct 17 Javascript
深入理解js 中async 函数的含义和用法
May 13 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
Mar 29 Javascript
Vue.js中的组件系统
May 30 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
Sep 21 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
德劲1103的维修打理经验
2021/03/02 无线电
xml+php动态载入与分页
2006/10/09 PHP
PHP 图片上传代码
2011/09/13 PHP
Symfony的安装和配置方法
2016/03/17 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
jquery操作select option 的代码小结
2011/06/21 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
Vue性能优化的方法
2020/07/30 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
django 自定义用户user模型的三种方法
2014/11/18 Python
python 字符串常用函数详解
2019/09/11 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
团委竞选演讲稿
2014/04/24 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS