深入浅析javascript函数中with

 更新时间:2018年10月28日 09:41:31   作者:illusory_f  
这篇文章主要介绍了javascript函数中with,with函数方便用来引用某个对象中已有的属性,但是不能用来给对象添加属性,要给对象创建新的属性,下面通过代码给大家讲解,需要的朋友可以参考下

/*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,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

相关文章

  • 分享XmlHttpRequest调用Webservice的一点心得

    分享XmlHttpRequest调用Webservice的一点心得

    因为项目需要,以后前端、手机客户端调用ASP.NET的Webservice来获取信息.所以这段时间开始看Webservice,试着通过XmlHttpRequest调用Webservice,过程中碰到不少问题,也有不少的收获
    2012-07-07
  • JavaScript模拟实现"双11"限时秒杀效果

    JavaScript模拟实现"双11"限时秒杀效果

    每年的“双11”啊,都是大家的剁手节。大家都在晚上12点,捧着手机看着倒计时,在他倒数到0的时候疯狂点击下单。可是你有没想过限时秒杀是怎么实现的呢?本文将为你揭秘如何用JavaScript实现限时秒杀,快来了解一下吧
    2022-03-03
  • Three.Js实现看房自由小项目

    Three.Js实现看房自由小项目

    目前随着元宇宙概念的爆火,THREE技术已经深入到了物联网、VR、游戏、数据可视化等多个平台,今天我们主要基于THREE实现一个三维的VR看房小项目,感兴趣的朋友跟随小编一起看看吧
    2022-10-10
  • 通过判断JavaScript的版本实现执行不同的代码

    通过判断JavaScript的版本实现执行不同的代码

    有时候需要根据JavaScript的版本来分别执行一些代码,那么就可能需要用到下面的代码.
    2010-05-05
  • 用js控制视频播放进度基本示例代码

    用js控制视频播放进度基本示例代码

    写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • js为鼠标添加右击事件防止默认的右击菜单弹出

    js为鼠标添加右击事件防止默认的右击菜单弹出

    本文为大家介绍下如何为使用js为鼠标添加右击事件防止默认的右击菜单弹出,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-07-07
  • 在layui中对table中的数据进行判断(0、1)转换为提示信息的方法

    在layui中对table中的数据进行判断(0、1)转换为提示信息的方法

    今天小编就为大家分享一篇在layui中对table中的数据进行判断(0、1)转换为提示信息的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 使用JS动态显示文本

    使用JS动态显示文本

    这篇文章主要为大家详细介绍了使用JavaScript动态显示文本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • js下利用控制器载入对应脚本

    js下利用控制器载入对应脚本

    因项目开发需要,须将每一个方法都独立成单独的js文件以便载入、维护,所以,必须需要有一个控制器用于载入这些方法。
    2010-07-07
  • three.js快速入门【推荐】

    three.js快速入门【推荐】

    本文主要介绍了three.js的基础知识。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01

最新评论