深入浅析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 相关文章推荐
利用XMLHTTP传递参数在另一页面执行并刷新本页
Oct 26 Javascript
关于使用runtimeStyle属性问题讨论文章
Mar 08 Javascript
syntaxhighlighter 使用方法
Jul 02 Javascript
jquery select下拉框操作的一些说明
Apr 02 Javascript
jquery制作属于自己的select自定义样式
Nov 23 Javascript
不间断循环滚动效果的实例代码(必看篇)
Oct 08 Javascript
jQuery实现弹幕效果
Feb 17 Javascript
原生JS实现日历组件的示例代码
Sep 22 Javascript
vue 1.x 交互实现仿百度下拉列表示例
Oct 21 Javascript
原来JS还可以这样拆箱转换详解
Feb 01 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
Mar 06 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
Mar 09 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伪造referer实例代码
2008/09/20 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
JavaScript实现多种排序算法
2016/02/24 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
Python写的一个简单监控系统
2015/06/19 Python
Django实现自定义404,500页面教程
2017/03/26 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
python为什么要安装到c盘
2020/07/20 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
10条PHP编程习惯
2014/05/26 面试题
使用索引有什么好处
2016/07/27 面试题
网络安全类面试题
2015/08/01 面试题
团日活动总结书
2014/05/08 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
工作试用期自我评价
2015/03/10 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技
React自定义hook的方法
2022/06/25 Javascript