深入浅析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利用数组length属性清空和截短数组的小例子
Jan 15 Javascript
js操作模态窗口及父子窗口间相互传值示例
Jun 09 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
Mar 10 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
Aug 04 Javascript
js实现网站最上边可关闭的浮动广告条代码
Sep 04 Javascript
JavaScript基本语法学习教程
Jan 14 Javascript
Bootstrap学习笔记之css组件(3)
Jun 07 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
Oct 11 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 jQuery
jQuery实现轮播图效果
Nov 26 jQuery
JavaScript async/await原理及实例解析
Dec 02 Javascript
ajax jquery实现页面某一个div的刷新效果
Mar 04 jQuery
微信小程序动画(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输出数组中重名的元素的几种处理方法
2012/09/05 PHP
初识PHP
2014/09/28 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
CI框架简单分页类用法示例
2020/06/06 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
用vue构建多页面应用的示例代码
2017/09/20 Javascript
js实现搜索栏效果
2018/11/16 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
js实现滑动进度条效果
2020/08/21 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
Python中的id()函数指的什么
2017/10/17 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
使用django实现一个代码发布系统
2019/07/18 Python
python+logging+yaml实现日志分割
2019/07/22 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
Python 如何查找特定类型文件
2020/08/17 Python
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
清洁工个人工作总结
2015/03/05 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
工厂无线对讲系统解决方案
2022/02/18 无线电
MySQL自定义函数及触发器
2022/08/05 MySQL