JavaScript with 语句学习

语法格式 

with(object instance) 

        //代码块 

有时候,我在一个程序代码中,多次需要使用某对象的属性或方法,照以前的写法,都是通过:对象.属性或者对象.方法这样的方式来分别获得该对象的属性和方法,着实有点麻烦,学习了with语句后,可以通过类似如下的方式来实现: 

with(objInstance) 

       var str = 属性1; 
..... 
}

去除了多次写对象名的麻烦。 

​ECMAScript 5 里已经不推荐使用 with 语句,一个主要原因是,它会产生莫名的副作用,比如:

var obj = { a: 3 };

with (obj) {
  a = 7;
  b = 5;
}

这里,我们创建了一个全局变量 b。但一般我们会认为 b 是 obj 对象的属性 – 可惜不是,我们确实创建了一个全局变量。

我们知道全局变量是魔鬼,尤其是莫名产生的全局变量。所以 ECMAScript 5 里引入 'use strict';,解决这类问题。

如果我们在代码前加入 'use strict';:

'use strict';
var obj = { a: 3 };

with (obj) {
  b = 5;
}

运行后会报告这样的错误:

SyntaxError: strict mode code may not contain ‘with’ statements

严格模式下不允许使用 with。那就不用吧。

另一个不用 with 的原因是,它会拖慢代码的运行速度。通常,JavaScript 引擎会对要运行的 JavaScript 代码做许多优化,但 with(以及 eval)的引入会变成《海伯利安》这样的变数,导致引擎无法优化代码。
简单说,JavaScript 里不要用 with 了,现在,以后,都没什么必要。

时间: 2024-11-05 16:38:48

JavaScript with 语句学习的相关文章

javascript的 {} 语句块详解_基础知识

今日学习解析json字符串,用到了一个eval()方法,解析字符串的时候为什么需要加上括号呢?摸不着头脑.原来javascript中{}语句块具有二义性,不加括号会出错,理解这种二义性对我们理解javascript代码有极大帮助. 一.{}语句块的两个含义 表示语句块 a. 在javascript中可以使用{}来括起代码,在编辑器中方便管理代码.因为javascript并没有块级作用域,所以这种写法是无害的. { //some code... } b. 在javascript中 ,条件判断语句,

Javascript 入门基础学习_基础知识

一.JavaScript简介: 学习JavaScript之前,有些东西你需要先了解: HTML XHTML 我觉得这些不需要太深入,懂个大概就行. JavaScript是: JavaScript 被设计用来向 HTML 页面添加交互行为. JavaScript 是一种脚本语言. JavaScript 由数行可执行计算机代码组成. JavaScript 通常被直接嵌入 HTML 页面. JavaScript 是一种解释性语言. 所有的人无需购买许可证均可使用 JavaScript. 这些都是一些书

高性能JavaScript循环语句和条件语句_javascript技巧

一.循环语句众所周知,常用的循环语句有for.while.do-while以及for-in,forEach.除了for-in和forEach性能略低外,平时我们对前三者的选择更多的是基于需求而非性能考虑,今天我们就对它们各自的性能做个测试,告诉我们最极端的情况下还能做哪些优化. 首先我们来谈谈为何for-in和forEach会比其他的慢.for-in一般是用在对象属性名的遍历上的,由于每次迭代操作会同时搜索实例本身的属性以及原型链上的属性,所以效率肯定低下:而forEach是基于函数的迭代(需要

Javascript提升阶段学习

JavaScript1:javascript简介 JavaScript是一种脚本语言,能实现网页内容的交互显示,当用户在客户端显示该网页时,浏览器就会执行JavaScript程序,用户通过交互的操作来改变网页等等内容,来实现html语言无法实现的效果 (html是网页的基础,css是样式,js是特效)2:javascript语言特点 2.1:JavaScript是基于对象和事件驱动的(动态的),它可以直接对用户或客户输入做出响应,无须经过web服务程序,他对用户的响应,是采用以事件驱动的方式进行

JavaScript经典语句及其基本应用

核心提示:JavaScript经典语句及其基本应用 ■打开■ <input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开>  <OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT> ■另存为■ <input name

[译]生活在 JavaScript 之中:学习第二门语言的好处

本文讲的是[译]生活在 JavaScript 之中:学习第二门语言的好处, 原文地址:Life after JavaScript: The Benefits of Learning a 2nd Language 原文作者:Nilson Jacques 译文出自:掘金翻译计划 译者:gy134340 校对者:Tina92,lsvih 你会多少种编程语言?根据最近的调查,大约 80% 的读者至少会两种.超过半数的人经常使用 PHP,我敢打赌大多数人就像我一样使用这门语言开始他们的 Web 开发. 最

浅谈JavaScript异常处理语句_javascript技巧

程序运行过程中难免会出错,出错后的运行结果往往是不正确的,因此运行时出错的程序通常被强制中止.运行时的错误统称为异常,为了能在错误发生时得到一个处理的机会,JavaScript提供了异常处理语句.包含try-catch.try-catch-finally和throw. try-catch语句 try{ tryStatements } catch(exception){ catchStatements } 参数说明: tryStatements:必选项.可能发生错误的语句序列. exception

JavaScript For 语句使用实例教程

JavaScript For 语句使用实例教程 在JavaScript中循环使用执行相同的代码块指定的次数或在指定的条件是真实的. 范例 For循环 如何写一环.使用的闭环运行相同的代码块指定的次数. 通过循环的HTML标题 如何使用的循环回路通过不同的HTML标题. JavaScript的For循环 往往当你写代码,你想同样的代码块运行一遍又一遍连胜.反而增加了几乎相等线脚本,我们可以用循环来执行这样的任务. 在JavaScript中有两种不同类型的循环: 为-循环通过代码块指定的次数 而-循

从头开始学JavaScript (六)——语句

原文:从头开始学JavaScript (六)--语句 一.条件分支语句:if 基本格式: if (<表达式1>){    <语句组1>}else if (<表达式2>){    <语句组2>}else{    <语句组3>}  执行流程: 二.循环语句 2.1前测试循环语句:在循环体内的代码被执行之前就对出口条件求值. 2.1.1while语句 基本格式: do {    <语句组>} while (<表达式>)  执行流