var test = { foo:function(){ (function(root){ console.log(root); }(this)) console.log(this); } } test.foo(); //结果是:Object {foo: function}
一开始有点蒙逼,想了一会其实一句话就能说清楚,这时候this就是调用这个方法的执行上下文中的this(注意不是这个方法的上下文),
例如上面调用匿名方法的是foo方法的执行上下文,由于我们是用test.foo()的方法调用它,它的上下文中this就是test对象,参数的值还是由这个执行上下文传给匿名方法的
相关推荐
在例2中,this作为方法的参数传递,用于指向当前对象。 3.this在匿名类和内部类中的使用 this关键字也可以在匿名类和内部类中使用,用于指向当前对象。例如,在匿名类中,可以使用this关键字来指向当前对象。 4....
当函数作为某个对象的方法被调用时,this指向这个方法所属的对象。这是因为在JavaScript中,对象的方法本质上是作为对象属性的函数。例如,有一个对象person,它有一个方法sayHello,那么当调用person.sayHello()时...
- 当函数被一个对象作为方法调用时,`this` 将绑定到那个对象。例如:`obj.fn()`,此时 `this` 指向 `obj`。 3. **显式绑定**: - 通过 `call`, `apply`, 或 `bind` 方法可以显式地改变 `this` 的指向。例如:`fn...
* 当将基本类型的变量作为参数传递给方法时,实际上是将变量的值复制了一份传递给方法。 * 在方法内部对参数的修改不会影响原始变量的值。 引用类型的值传递: * 当将引用类型的变量作为参数传递给方法时,实际上...
- **作为对象方法调用**: 当函数作为对象的方法被调用时,`this`指向该对象。 - **构造函数调用**: 当函数被用作构造函数时(使用`new`关键字),`this`指向新创建的对象实例。 **3. `this`的特殊绑定** - **使用`...
3. **对象方法**:当函数作为对象的一个方法调用时,`this`指向调用该方法的对象。例如: ```javascript var o = { name: 'xl', print: function() { console.log('this:', this); } }; o.print(); // 'this...
当一个函数作为对象的方法被调用时,`this`将指向调用该方法的对象。例如,`obj.fn()`中的`this`将指向`obj`。 三、构造函数调用 在使用`new`关键字创建实例时,构造函数内的`this`将指向新创建的对象。例如: ```...
3. **对象方法**:作为对象属性的函数(方法)调用时,`this`指向调用该方法的对象。例如: ```javascript var o = { print: function() { console.log('this:', this); } }; o.print(); // 输出:this: { print:...
`call()`方法可以用来调用一个函数,并允许我们在调用时指定`this`的值以及任何必要的参数。 示例代码: ```javascript function A(name, age) { this.name = name; this.age = age; this.say = function() { ...
JavaScript中的this关键字是一个非常重要的概念,它在函数中被用来引用对象自身,但在不同的执行上下文中,它的值可能会有所不同。...使用apply或call方法时,可以通过参数指定函数执行时的this指向。
当函数作为对象的方法调用时,`this`指向该对象。 3. **作为构造函数调用时**: ```javascript function Star(username) { this.username = username; } var star1 = new Star('ldh'); ``` 当使用`new`...
当函数作为对象的一个方法被调用时,`this` 指向调用该方法的对象。例如: ```javascript var obj = { name: "xiaoming", say: function() { console.log(this.name); } }; obj.say(); // 输出 "xiaoming" ``` ...
具体来说,`Function.prototype.bind`方法会创建一个新的函数,该函数在被调用时,其`this`值被设置为`bind`方法的第一个参数所给出的值,后续参数则被作为新函数调用时的参数传递。以下是一个`bind`方法的实现示例...
由于JavaScript的函数是一等公民,可以作为变量传递、作为对象的属性,也可以被其它函数作为参数传递,因此`this`的指向是动态变化的,这也是它与许多其他面向对象编程语言中的`this`用法最显著的区别。 首先,`...
`bind`方法返回一个新的函数,该函数在调用时`this`值会被固定为`bind`方法的第一个参数。这使得在异步操作或事件处理等场景中,可以确保`this`的值不会丢失: ```javascript window.color = 'red'; var o = { ...
当函数作为对象的一个方法被调用时,`this`将指向调用该方法的对象。例如,`user.selfIntroduction()`中的`this`指向`user`对象,因此可以访问`userName`和`age`属性。然而,当内部函数如`loop`被调用时,由于设计...
`apply()`接收一个数组作为参数,而`call()`接受逗号分隔的参数。它们都会立即执行函数。例如: ```javascript function sum(a, b) { return a + b; } let obj = { value1: 1, value2: 2 }; sum.call(obj, 3, ...
当函数作为对象的一个方法被调用时,`this`指向调用该方法的对象。这被称为方法调用。例如: ```javascript var obj = { name: 'aaa', age: 20, said: function() { console.log(this); // this === obj } ...
可以传入额外的参数,这些参数将在新函数被调用时作为参数传递。 ```javascript function fn(a, b) { console.log(this); console.log(a); //world console.log(b); //123 return "back"; } var res = fn....