Groovy中Closure的this到底指向谁?】的更多相关文章

Groovy in Action(中文版)第136页明确说Closure的this指向Closure自己.并且从代码注释处作者也是这样理解的: class Mother{    int field = 1    int foo(){        return 2    } Closure birth(param){        def local = 3        def closure = { caller->            [                this,    …
1.前言 在JavaScript中,this的指向一直是大多数初学者的易错点,总是搞不清楚this到底指向谁,而在求职面试中,this的指向问题往往又是高频考点.本篇博文就来总结一下在JavaScript中不同情况下this到底指向谁. 2.热身一下 首先,我们先来看看下面的代码,请问,下面这段代码运行后会在控制台输出什么?如果你能马上回答出程序输出的结果,那么你已经很清楚this的指向了,不用再往下看了. var bar = 2; var obj = { bar: 1, foo: functi…
Closures(闭包) 本节主要讲groovy中的一个核心语法:closurs,也叫闭包.闭包在groovy中是一个处于代码上下文中的开放的,匿名代码块.它可以访问到其外部的变量或方法. 1. 句法 1.1 定义一个闭包 { [closureParameters -> ] statements } 其中[]内是可选的闭包参数,可省略.当闭包带有参数,就需要->来将参数和闭包体相分离. 下面看一些闭包的具体例子: { item++ } { -> item++ } { println it…
JS中, this的值到底是什么? 几个月之前, 拜读了<javascript语言精髓>, 里面对于这个问题, 做出了很好的解释... JS中, this的值取决于调用的模式, 而JS中共有4中调用模式: 1. 方法调用模式 当一个函数被保存为对象的一个属性时, 我们称它为一个方法, 当一个方法被调用时, this指向该对象, 如: var obj = { value: 1, getValue: function() { alert(this.value); } }; obj.getValue…
之前很久的时间,因为研究不深,对于this的值一直模模糊糊,不是很清楚,最近有空做了一些研究,终于彻底弄明白了this到底为何物. 首先, 先抛出一个定论:”在Javascript中,this关键字永远都指向函数(方法)的所有者”. 全局上下文 在全局上下文中(在任何函数体外部),this指代全局对象,无论是否在严格模式下. (注:全局对象没有名称,视具体的js环境而定义,在浏览器环境下为window) console.log(this.document === document); //tru…
Groovy中的面向对象 前面说到groovy支持脚本和类,前面一节已将简单说了脚本和类之间的关系,这一节主要介绍一下groovy中类的相关知识,即面向对象相关知识. 1.类型 1.1 原始类型 groovy中支持的原始数据类型与java相同,分别是boolean,char,short,int,long,float,double. 1.2 类 groovy中的类与java中很相似,但有以下几点是groovy特有的: public修饰的字段会被自动转换成属性变量,这样可以避免很多冗余的get和se…
昨天压缩Js文件时发现了项目中的一个prototype的问题代码如下所示: 1. <script> var XXX = function(){ }; var x1 = new XXX(); XXX.prototype.fnx = function(){ alert("123"); } x1.fnx(); </script> 2. <script> var XXX = function(){ }; var x1 = new XXX(); XXX.pro…
上一篇:Groovy中那些神奇注解之ToString 写完ToString,本来想今天就写到这了,突然觉得InheritConstructors注解实在也是个神器,写起来也没多少字,还是写了吧. InheritConstructors,从名字看就知道是继承构造函数(这话貌似我每篇都说,不得不说人家名字取得好),不知道大家有没有这样的经历,继承JAVA的Exception的时候,为了能和Exception原本的构造函数对应起来,会写上很多个构造函数,而函数的实现,往往就是super(...),如果…
继续上一篇:Groovy中那些神奇注解之Memoized 这篇就讲讲@groovy.transform.ToString这个注解,这注解太熟悉了,熟悉到让人一看就知道是干吗的,不就是把Bean转在String么? 没错,它就是把Bean转成String,只不过比Java默认的类名加上HashCode可是好太多了,来个例子(Groovy自带了dump()和inspect()方法,也是查看对象的,写在一起做比较了) @groovy.transform.ToString class Book{ def…
临近年关手头比较闲,去看了一下Groovy的官方文档,才发现原来Groovy中带了那么多的注解,很多注解带来的效果,有时候让人感觉“这不是在变魔法吧”. 个人很喜欢Groovy,写不成Ruby,Groovy一样让我很愉悦.可惜在国内Groovy实在没什么人气,连个像样的官方站都没有,或许是因为喜欢脚本的都在写ruby,python,写Java的又对他不屑一顾? 接下来的一系列文章,就只介绍一些我个人觉得很好用,在开发中用到机会会比较多的注解. PS:强烈推荐Groovyr官方文档,相当的详细,地…