`

看prototype时一个很巧妙的地方。

阅读更多
if (function() {
  var i = 0, Test = function(value) { this.key = value };
  Test.prototype.key = 'foo';
  for (var property in new Test('bar')) i++;
  return i > 1;
}()) Hash.prototype._each = function(iterator) {
  var cache = [];
  for (var key in this) {
    var value = this[key];
    if ((value && value == Hash.prototype[key]) || cache.include(key)) continue;
    cache.push(key);
    var pair = [key, value];
    pair.key = key;
    pair.value = value;
    iterator(pair);
  }
};

 if语句里面这一段很有意思,原来function还可以这么用,不过我js不精,当我仿照以上代码尝试以下用法的时候,报错。

function() { alert("foobar"); }();

 总提示语法错误,但是把上面这句话加到一个表达式里面的时候,又可以用了

function func(obj) {
   alert(obj);
}
func( function(){ return "foobar"; }() );
 不太明白具体原因,呵呵,因为我对js还不太熟悉,哪位看到了帮我指点一下。

 

 

分享到:
评论
1 楼 ispring 2008-06-22  
呵呵,
function() {  
  var i = 0, Test = function(value) { this.key = value };  
  Test.prototype.key = 'foo';  
  for (var property in new Test('bar')) i++;  
  return i > 1;  
}()
最后的 () 表示了要执行这个函数,而这个函数最后的返回值是:return i > 1; 是一个布尔值,这是它为什么能作为 if 的判断条件的原因,而你的 alert(obj); 语句则没有这个功能。

相关推荐

    prototype1.4旧中文版

    看到一个很好的东西在国内没有被很多人使用起来,实在是不爽,所以花了很大功夫把这个手册翻译成中文,由于这篇文章很长,所以,翻译的工作量很大而且有些地方英文版也没有说清楚,虽得查看源代码,好在不是坚持做完...

    Prototype 1.6.0.3中文参考手册chm.rar

    每一个篇章我都很用心的去翻译,甚至有些地方可以说是字斟句酌,有时候可能会显得比较啰嗦, 主要是考虑到一些像我一样的初学者——或许多出来的那一两句话就可以让人明悟呢。 个人觉得自己的翻译质量应该不比国内...

    Prototype_api_cn

    看到一个很好的东西在国内没有被很多人使用起来,实在是不爽,所以花了很大功夫把这个手册翻译成中文,由于这篇文章很长,所以,翻译的工作量很大而且有些地方英文版也没有说清楚,虽得查看源代码,好在不是坚持做完...

    prototype 手册

    看到一个很好的东西在国内没有被很多人使用起来,实在是不爽,所以花了很大功夫把这个手册翻译成中文,由于这篇文章很长,所以,翻译的工作量很大而且有些地方英文版也没有说清楚,虽得查看源代码,好在不是坚持做完...

    Prototype 1.6.0.3 中文参考手册

    每一个篇章我都很用心的去翻译,甚至有些地方可以说是字斟句酌,有时候可能会显得比较啰嗦, 主要是考虑到一些像我一样的初学者——或许多出来的那一两句话就可以让人明悟呢。

    Prototype框架详解

    这里所说的“Prototype”不是JavaScript编程中的原型(“prototype”),而是由“Sam Stephenson”写的一个JavaScript类库。这个构思奇妙,而且兼容标准的类库,能帮助程序员轻松建立有高度互动的“web2.0”特性的富...

    js使用原型对象(prototype)需要注意的地方

    我们先来一个简单的构造函数+原型对象的小程序 function CreateObj( uName, uAge ) { this.userName = uName; this.userAge = uAge; } CreateObj.prototype.showUserName = function () { return this....

    serena prototype composer 2008实例教程

    serena prototype composer 2008自己做的练习啊,我也是刚学了三天就做了这个东西,不好的地方还望大家多多包涵,同学同进,共同成长,谢谢。

    浅析用prototype定义自己的方法

    prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!这一点可能听起来会有点乱,别急,下面我便通过实例对这一特殊的方法作已下讲解:...

    使用prototype.js进行异步操作

    首先下载prototype.js这个类包,然后包含在你的<...页面中 [removed]... 假如你有一个应用程序可以通过url http://ajax.boogu.com/cm.html与服务器通信。它返回下面这样的XML 响应。 (当然这是不可能的) <?x

    浅谈javascript中的prototype和__proto__的理解

    每个函数都有一个prototype属性,该属性是一个指针,指向一个对象。 而这个对象的用途是包含由特定类型的所有实例共享的属性和方法。使用这个对象的好处就是可以让所有实例对象共享它所拥有的属性和方法 2、 __proto...

    基于prototype的表单验证框架rapid-validation-v1.0

    简洁,快速的验证语法 无需编写验证提示信息(当然也支持自定义提示信息) 错误消息在指定地方显示 支持组合验证 Ajax支持 基于prototype.js 支持国际化 易于扩展 基于标准的Html属性...

    戏说JS中的原型-Prototype

    什么是原型:在了解原型链之前我们先来看看一个函数在创建过程中做了哪些事情,举一个空函数的例子:当我们在代码里面声明这么一个空函数,js解析的本质是:1、创建一个对象(有constructor属性及[[Prototype]]属性...

    Prototype1.4手册

    看到一个很好的东西在国内没有被很多人使用起来,实在是不爽,所以花了很大功夫把这个手册翻译成中文,由于这篇文章很长,所以,翻译的工作量很大而且有些地方英文版也没有说清楚,虽得查看源代码,好在不是坚持做完...

    一直在学习Spring,这个是模仿SpringIOC的实现原理仿制的一个框架,希望能在不断地构建以及重构这个框架的过程中不断地学

    看了很多别人写的项目,很多项目都很不错,但是却没有一个详细项目说明(我的一开始也是,好感概啊!)导致你的项目再好,别人的理解成本是很高的; 来github也有很长的一段时间了,在这里也收获了很多,既然它是一...

    JavaScript prototype属性使用说明

    prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!

    dim-prototype:用Java编写的Minecraft服务器的原型

    这是一个新的Minecraft服务器,与普通服务器相比,它将提供更多的自定义功能,例如可修改的Online和Max Player数量,可在任何地方访问的可燃数据包,允许连接多个版本以及插件API! 特征 1.7到1.8可以连接,由于...

    learn-prototype:一个(可能是一次性的)地方来开始为新的Learn.knightlab.com制定UX实践

    Learn.knightlab.com v2原型建立在Polymer Starter Kit Light上。 首先,从app目录内部启动本地服务器。 请确保提供目录的内容而不是根目录,否则路由将无法正常运行。使用Python启动服务器如果您是Windows用户,请...

    让ecside2离开prototype.js

    吧ecside-unpack.js改名为ecside.js即可使用。注释中By SAM是俺改的地方 博文链接:https://cats-tiger.iteye.com/blog/181714

Global site tag (gtag.js) - Google Analytics