运行结果显示是:"inner name, outer name"
。按我们在2中的讲解,这里的结果如果是"inner name, undefined"似乎更合理些吧?但是正确的结果确实是前者,这是由于javascript变量作用域的问题决定的,详细了解推荐参看"原来jscript中的关键字'var'还是有文章的"一文及回复。
说了这么多javascript中this的用法,其实this最根本的特性还是和oo语言中的定义相吻合的。之所以有这么多看似混乱的使用方式,是因为javascript语言(解释器和语言本身的内容)本身在实现上是遵循oo的(object-based),连它的所有数据类型都是对象,也有object这样一个super object。但是这个语言在运行上(runtime),就没有遵循完备的oo特点,所以就出现了this的指代混乱。