深入浅析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 相关文章推荐
JavaScript 自动完成脚本整理(33个)
Oct 20 Javascript
js判断是否为ie的方法小结
Jan 13 Javascript
JavaScript隐式类型转换
Mar 15 Javascript
vue.js实现刷新当前页面的方法教程
Jul 05 Javascript
import与export在node.js中的使用详解
Sep 28 Javascript
Vue组件之全局组件与局部组件的使用详解
Oct 09 Javascript
轻松理解vue的双向数据绑定问题
Oct 30 Javascript
React 组件中的 bind(this)示例代码
Sep 16 Javascript
通过js给网页加上水印背景实例
Jun 17 Javascript
Element Tooltip 文字提示的使用示例
Jul 26 Javascript
80行代码写一个Webpack插件并发布到npm
May 24 Javascript
Python机器学习之决策树和随机森林
Jul 15 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中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
JS event使用方法详解
2008/04/28 Javascript
JQuery 风格的HTML文本转义
2009/07/01 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
javascript时区函数介绍
2012/09/14 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
python引用DLL文件的方法
2015/05/11 Python
np.random.seed() 的使用详解
2020/01/14 Python
Python集合操作方法详解
2020/02/09 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
python 爬取天气网卫星图片
2021/06/07 Python