深入浅析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 相关文章推荐
Prototype使用指南之form.js
Jan 10 Javascript
JS解密入门之凭直觉解
Jun 25 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
Feb 07 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
Apr 12 Javascript
JavaScript中的数学运算介绍
Dec 29 Javascript
微信中一些常用的js方法汇总
Mar 12 Javascript
特殊日期提示功能的实现方法
Jun 16 Javascript
jQuery弹出遮罩层效果完整示例
Sep 13 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
Apr 25 Javascript
Windows下Node爬虫神器Puppeteer安装记
Jan 09 Javascript
javascript实现5秒倒计时并跳转功能
Jun 20 Javascript
微信小程序实现蓝牙打印
Sep 23 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 301转向实现代码
2008/09/18 PHP
PHP 函数执行效率的小比较
2010/10/17 PHP
初品cakephp 入门基础
2012/02/16 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
php数组键值用法实例分析
2015/02/27 PHP
php+mysql实现无限级分类
2015/11/11 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
js获取php变量的实现代码
2013/08/10 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
介绍Python中的文档测试模块
2015/04/28 Python
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
详解Python的三种可变参数
2019/05/08 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
结婚通知短信大全
2015/04/17 职场文书
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫