深入浅析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 相关文章推荐
什么是json和jsonp,jQuery json实例详详细说明
Dec 11 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
Aug 15 Javascript
jquery让指定的元素闪烁显示的方法
Mar 17 Javascript
javascript弹性运动效果简单实现方法
Jan 08 Javascript
html判断当前页面是否在iframe中的实例
Nov 30 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
详解angular2封装material2对话框组件
Mar 03 Javascript
JS控件bootstrap datepicker使用方法详解
Mar 25 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
Sep 11 Javascript
JS+CSS3实现的简易钟表效果示例
Apr 13 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
May 26 Javascript
Ajax实现局部刷新的方法实例
Mar 31 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
discuz安全提问算法
2007/06/06 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
php实现登录页面的简单实例
2019/09/29 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
Python初学者常见错误详解
2019/07/02 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
安全生产责任书范本
2014/04/15 职场文书
商业融资计划书
2014/04/29 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis
PHP实现两种排课方式
2021/06/26 PHP
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang