深入浅析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 相关文章推荐
IE8 原生JSON支持
Apr 13 Javascript
javascript options属性集合操作代码
Dec 28 Javascript
javascript学习基础笔记之DOM对象操作
Nov 03 Javascript
Javascript中获取对象的原型对象的方法小结
Feb 25 Javascript
JS基于VML技术实现的五角星礼花效果代码
Oct 26 Javascript
第六章之辅组类与响应式工具
Apr 25 Javascript
基于JavaScript实现在新的tab页打开url
Aug 04 Javascript
thinkjs之页面跳转同步异步操作
Feb 05 Javascript
JQuery实现定时刷新功能代码
May 09 jQuery
手把手搭建安装基于windows的Vue.js运行环境
Jun 12 Javascript
jquery的$().each和$.each的区别
Jan 18 jQuery
vue组件开发之tab切换组件使用详解
Aug 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
PHP.vs.JAVA
2016/04/29 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
学习ExtJS border布局
2009/10/08 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
js中的DOM模拟购物车功能
2017/03/22 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
python基础教程之循环介绍
2014/08/29 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
捷科时代的软件测试笔试题
2015/11/09 面试题
涉外文秘个人求职的自我评价
2013/10/07 职场文书
学校标语大全
2014/06/19 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
Python anaconda安装库命令详解
2021/10/16 Python