javascript with语句用法详解

发布时间:2020-07-20编辑:脚本学堂
本文详细介绍了javascript中with语句的用法,有关javascript with语句的几个实例,有需要的朋友参考学习下。

例子,javascript with语句用法的例子。
 

复制代码 代码示例:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>with语句(类似于vb中的)_www.jb200.com</title>
    <script type="text/javascript">
        function student(name, age) {
            this.name = name;
            this.age = age;
        }
        var stu = new student('罗纳尔多', 36);
        with (stu) { //with语句(类似于vb中的),用于简化代码
            alert("name:" + name + ",age:" + age);
        }
    </script>
</head>
<body>
</body>
</html>

javascriptwith 语句的使用方法

javascript 有个 with 关键字, with 语句的原本用意是为逐级的对象访问提供命名空间式的速写方式. 也就是在指定的代码区域, 直接通过节点名称调用对象

用过 java 和 .net 的朋友对包或命名空间的概念应该不会陌生, 正因为有这个概念, 使代码的简洁易读得到了保证。
不知 javascript 设计之初是如何定位 with 语句的, 个人觉得它们之间有一定的相似度。

例如:
 

复制代码 代码示例:
apple.banana.candy.dog.egg.fog.god.huh.index = 0;
dosomething(apple.banana.candy.dog.egg.fog.god.huh.index);

利用 with 语句,可以写为.
 

复制代码 代码示例:
with(apple.banana.candy.dog.egg.fog.god.huh) {
c = 0;
dosomething(index);
}

看起来很美妙, 却存在致命的缺陷。

以下使用with语句进行一些测试,javascript with语句的一些例子。

1. 在 with 语句内部通过内部变量修改数值
 

复制代码 代码示例:

var root = {
branch: {
node: 1
}
};

with(root.branch) {
node = 0;
// 显示 0, 正确!
alert(node);
}
// 显示 0, 正确!
alert(root.branch.node);

2. 在 with 语句内部通过对象节点修改数值
 

复制代码 代码示例:

var root = {
branch: {
node: 1
}
};

with(root.branch) {
root.branch.node = 0;
// 显示 0, 正确!
alert(node);
}
// 显示 0, 正确!
alert(root.branch.node);

经过测试 1 和测试 2, 乍看没什么问题, 但是... 请看测试 3.

3. 在 with 语句内部通过对象父节点修改数值
 

复制代码 代码示例:

var root = {
branch: {
node: 1
}
};

with(root.branch) {
root.branch = {
node: 0
};
// 显示 1, 错误!
alert(node);
}
// 显示 0, 正确!
alert(root.branch.node);

由上面的测试 3 可知, with 语句内部的节点父节点修改后, 不会同步到节点本身。
不能保证内外数值的一致性. 这是可能成为项目里面隐藏性很高的 bug.
那我们该怎么办呢? 接受那很长的一串逐级访问, 还是另有他法?

可以通过别名引用父节点的方式来调用节点对象。
例如:
 

复制代码 代码示例:

var root = {
branch: {
node: 1
}
};

var quote = root.branch;
quote.node = 0;
// 显示 0, 正确!
alert(root.branch.node);

javascript 中with的用法

方法:with (<对象>) <语句>;

with 语句可以用来引用某个特定的对象中已有的属性,但是不能用来给对象添加属性,要给对象添加属性,还要明确的引用该对象。

例如:
 

复制代码 代码示例:
function users(){
   this.name = 'nobody'; this.age = '23';this.gender = 'girl'
}
var people = new users();
    with(people){
    alert(name);
}
 

通常用来缩短特定情形下必须写的代码量:

例子:
 

复制代码 代码示例:
x = math.cos(3 * math.pi) + math.sin(math.ln10);
y = math.tan(14 * math.e);

当使用with时就可以写成这样:
 

复制代码 代码示例:
with (math) { x = cos(3 * pi) + sin(ln10); y = tan(14 * e); }

javascript with 语句
with 语句的作用是将代码的作用域设置到一个特定的对象中。

例如:
 

复制代码 代码示例:
var box = { //创建一个对象
'name' : 'jimi', //键值对
'age' : 28,
'height' : 178
};
var n = box.name; //从对象里取值赋给变量
var a = box.age;
var h = box.height;
 

可以将上面的三段赋值操作改写成:
 

复制代码 代码示例:
with (box) { //省略了 box 对象名
var n = name;
var a = age;
var h = height;
}

以上通过实例介绍了javascript with语句的用法,希望对大家有所帮助。