`

看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介绍

    当我们使用`new`关键字调用一个构造函数时,实际上是基于该构造函数的`prototype`属性创建了一个新的对象。这意味着,`prototype`对象上的所有成员都将被复制到新创建的对象中,使得这些成员可以直接在实例上访问。...

    在vs2005基于prototype.js的模态弹出窗口

    在开发Web应用程序时,模态弹出窗口是一种常见的交互设计元素,它允许用户与主页面交互的同时处理一个独立的任务或信息。"在VS2005基于Prototype.js的模态弹出窗口"这个主题,主要涉及到两个核心部分:Visual Studio...

    Prototype1.4 中文帮助文档

    这个库的主要目标是为JavaScript开发者提供一个更加结构化、易于理解和使用的环境,同时提高了代码的可维护性和效率。Prototype 1.4 中文帮助文档为国内开发者提供了详细的指导,便于更好地理解和应用这个库。 **...

    LAGame-Simple-Prototype-test2

    本资源"LAGame-Simple-Prototype-test2"提供了一种基于Java语言的手机游戏编程实践,特别针对嵌入式图形的开发,以实现一个经典的俄罗斯方块游戏。下面我们将深入探讨这个项目中的关键知识点。 1. **Java语言基础**...

    最新Prototype手册

    Prototype.js 是一个广泛使用的JavaScript库,它为浏览器环境提供了许多实用的功能,大大简化了JavaScript的开发。这份“最新Prototype手册”深入探讨了这个库的核心特性,旨在帮助开发者更好地理解和利用Prototype....

    让ecside2离开prototype.js

    标题“让ecside2离开prototype.js”涉及到的是一个关于JavaScript库和编程实践的问题。这个标题表明了一种情况,即在项目中,用户可能遇到了ecside2(可能是ECSide的一个版本或者一个特定的库)与prototype.js之间的...

    js中prototype用法详细介绍.docx

    在JavaScript中,`prototype`是一个非常重要的概念,尤其是在面向对象编程(OOP)方面。通过理解并掌握`prototype`的使用,开发者可以更加灵活地扩展对象的功能,提高代码的复用性和可维护性。 #### 二、基本概念 在...

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

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

    浅析用prototype定义自己的方法

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

    使用prototype.js进行异步操作

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

    浅谈javascript中的prototype和__proto__的理解

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

    理解javascript中的Function.prototype.bind的方法

    常见的做法是将 this 赋值给另一个变量(比如 self、_this、that 等),然后在需要的地方使用该变量。然而,使用 bind 方法可以直接绑定 this 到指定的函数,并且保持参数预设,使代码更简洁明了。 #### 3. 问题...

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

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

    戏说JS中的原型-Prototype

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

Global site tag (gtag.js) - Google Analytics