什么是'this'当它在原型中时引用
What is 'this' referencing when it is inside a prototype?
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
从Crockford的Good Parts偷来的。当代码返回'this'时,在这种情况下'this'引用是什么?
当我在js代码中看到"this"时,我总是问自己这个问题,因为我知道js中有"this"这个词。'this'在嵌套函数中使用时实际上引用全局变量)
在扩展Function.prototype
时,this
将引用函数实例。
的例子:
function foo() {};
foo.method(); // `this` refers to foo
有四种不同的函数调用方式,它们决定了this
所指的是什么。MDN有一篇很好的文章。
- 简单的函数调用:全局对象(
window
在浏览器) - 对象方法:对象(即
obj.method()
,this
引用obj
)(这就是我们在您的示例中的情况) - 使用
new
关键字:一个空对象,继承函数原型 -
call
/apply
:无论你传递的第一个参数
在此上下文中,this
是对Function
实例的引用。
this
是指调用它的method
方法的构造函数。例如,你可以这样写:
function Car(color){
this.color = color || 'blue';
}
Car.method('showcolor',function(){return this.color;});
//^Car is a constructor function, so 'this' in 'method' refers to Car here
var redcar = new Car('red'), yellowcar = new Car('yellow');
alert(redcar.showcolor()); //=> red
alert(yellowcar.showcolor()); //=> ... you guessed it!
相关文章:
- 引用类变量中的原型方法
- 引用“;instanceof“/来自另一个范围的原型
- 如何引用原型的父级
- 使用闭包创建原型中引用的私有属性
- 通过引用调用原型函数时,类会丢失“this”作用域
- JavaScript原型变量创建引用
- 无法引用我的 JQuery 原型类上的方法
- 对于 JavaScript 的继承,引用或复制父级的原型是否更好
- 构造函数中未定义对原型函数的javascript引用
- 使用原型从构造函数引用变量
- 正在原型构造函数中创建对象引用
- 原型中的数组和对象-不被视为引用
- 保存& # 39;这个# 39;javascript原型事件处理程序中的引用
- 为什么对原型的这两个引用返回不同的值?
- 如果我使用原型创建OOP JS代码,我如何从循环中引用类方法
- 在原型设计时跟踪javascript对象引用的最佳方法是什么?
- 引用“this"在对象原型方法中的setInterval/setTimeout
- Rails管道javascript试图调用初始化原型-引用错误
- JavaScript如何维护原型引用?
- 在 Javascript 中传递和存储对象原型引用和参数