深入浅析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网页关闭时提醒效果脚本
Oct 22 Javascript
W3C Group的JavaScript1.8 新特性介绍
May 19 Javascript
jQuery实现购物车表单自动结算效果实例
Aug 10 Javascript
学习JavaScript设计模式(封装)
Nov 26 Javascript
基于JavaScript实现瀑布流布局(二)
Jan 26 Javascript
ES6入门教程之Class和Module详解
May 17 Javascript
使用JQ完成表格隔行换色的简单实例
Aug 25 Javascript
VUE实现移动端列表筛选功能
Aug 23 Javascript
Jquery动态列功能完整实例
Aug 30 jQuery
基于Vue+ElementUI的省市区地址选择通用组件
Nov 20 Javascript
Typescript3.9 常用新特性一览(推荐)
May 14 Javascript
javascript+css实现俄罗斯方块小游戏
Jun 28 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 split汉字
2009/06/05 PHP
PHP编码转换
2012/11/05 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
读jQuery之五(取DOM元素)
2011/06/20 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
详解JS预解析原理
2020/06/16 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
Django框架models使用group by详解
2020/03/11 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
python中四舍五入的正确打开方式
2021/01/18 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
继承权公证书
2014/04/09 职场文书
新闻学专业求职信
2014/07/28 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
个人党性锻炼总结
2015/03/05 职场文书
获奖感言一句话
2015/07/31 职场文书
mysql优化
2021/04/06 MySQL
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python