this的取值是跟它所在的上下文有关的。具体说就是跟它位于哪个函数中有关,以及跟这个函数被调用的方式有关。
在闭包里,还有在事件绑定的时候,由于作用的问题,this的上下文(作用域)变了,这个确实在JS中有点诡异,把this设置成一个局部变量后,外部函数里嵌套的函数就可以正确识别这个变量了。
tab.prototype.init=function(){ for(var i=0,len=this.span.length;i<len;i++){ var that=this; that.span[i].index=i; that.span[i].onclick=function(){ that.show(this.index); } } this.show(1); }
相关推荐
为了避免这种情况,通常会将 `this` 绑定到一个局部变量(常见的做法是使用 `that` 或 `self`),如下所示: ```javascript var person = { name: "chaimm", setName: function(name) { var that = this; // 将 ...
这个警告表示IDE检测到某个字段(Field)在类内部只在一处被赋值,并且其所有使用都在赋值之后,因此可以将该字段转换为局部变量,以提高代码的效率和可读性。 ### 问题解析 当Android Studio显示“Field can be ...
- 当成员变量与局部变量名称冲突时,使用`this`关键字来明确指向成员变量。 - 示例: ```java public class MyClass { private int id; public void setId(int id) { this.id = id; // 使用this关键字明确指向...
`this`在这里没有被用来引用对象实例,而是通过局部变量`obj`来引用。 2. **构造函数模式** 这是最常见的面向对象写法,使用`function`关键字定义构造函数,通过`new`操作符创建对象实例。`this`关键字在构造函数...
- **局部变量声明**:用于声明局部变量。 - **示例**: ```java int i; double d; ``` - **数组声明**:用于声明数组。 - **示例**: ```java int[] array; double[][] matrix; ``` ##### 8.2 复合语句 ...
FreeMarker对空值的处理非常严格,FreeMarker的变量必须有值,没有被赋值的变量就会抛出异常,因为FreeMarker未赋值 的变量强制出错可以杜绝很多潜在的错误,如缺失潜在的变量命名,或者其他变量错误.这里所说的空值,...
所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样...
#### 1.1 为什么要有编码规范(Why Have Code Conventions) 编码规范对于程序员而言尤为重要,其重要性体现在以下几个方面: 1. **提高代码可读性**:一致性的编码风格能够帮助团队成员更快地理解彼此编写的代码。 ...
复合语句块允许在一个复合语句中定义局部变量并返回一个值。这种特性常用于宏定义中,以避免某些副作用。例如: ```c int rslt = ({ int a = 5, b; b = a + 3; b; // 最后一条语句作为复合语句块的返回值 }); ``...
96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 22 99、说下Hibernate的缓存机制 22 100、Hibernate的查询方式 23 101...
- **为什么选择Python而非Perl**: - 更清晰的语法结构,易于理解和维护; - 更广泛的社区支持和资源; - 在科学计算、数据分析等领域有着更为强大的库支持。 - **程序员的话**: - 强调Python不仅是一种语言,...