secrets of the javascript Ninja( with(){} 的用法)(javascript忍者的秘密)

      with语句也是一个功能强大的特性,但是它常常不能被正确的理解。它允许你把一个对象的所有属性放到with语句所指定的作用域中,这样这些属性就可以想平常的JavaScript变量被使用。理解with语句是如何工作的,在你开发中会带来很大的好处。

 

JavaScript中with(){}语句是如何工作的

让我们首先通过一个小例子来看看with(){}语句的基本用法:

 

从这个例子我们来总结一下with的基本用法:

 

1.在with(){}语句中,你可以直接使用with指定的对象的变量和方法

2.如果外部存在和with指定的对象的变量同名的属性,那么with指定对象中的属性会覆盖其他同名的属性

3.this指定的是katana的外部作用域。

 

那么我们能否在with(){}语句中添加一些属性和方法呢?来看一段代码:

 

从上面的代码我们可以发现:

 

1.在with语句中只能使用和更改对象已有属性,不能为对象添加新的属性

2.如果为对象添加新的属性,新添加的属性会作为全局对象的属性,而不是with指定对象的属性

JavaScript中如何使用with(){}语句

我们主要通过一些著名的JavaScript库的示例代码来看看with(){}如何使用:

 

  1. Prototype库中使用with(){}的情况。
  2.  

    下面是base2库中使用with的情况:

    base2中另外的一中情况:

     

     

     

    Firebug firefox extension中使用with(){}的情况

     

  3. 导入命名空间的时候使用如下
  4. 第二个代码是不是简单了很多。

  5. 净化面向对象的代码,使用如下方式编写面向对象的代码。
  6.  

     

    从上面的代码我们可以发现一下三点:

    1.私有数据和共有数据是的定义是不一样的

    2.由于使用with(this){}使得访问共有数据和私有数据是一样的

    3.方法的的定义和变量的定义相似,共有方法必须使用this前缀,但是访问共有方法的时候和私有方法是一样的,由于使用with(this){}

     

     

  7. 测试
  8. 下面是Scriptaculous test suite.中的一个示例

     

     

     

     

     

  9. 模板
  10. 下面来看看John Resig写的一个模板系统:

     

     

     

    具体解释在此:http://ejohn.org/blog/javascript-micro-templating/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值