Javascript解释'this'的用法

时间:2013-09-05 08:53:25

标签: javascript

我正在学习javascript并尝试理解为什么javascript使用this.vanilla

这与写作相同:

var SomeVariable = [1, "bean", vanilla ? vanilla : "Madagascar Bourbon"];

使用与参数vanilla相同的名称似乎很混乱。

var VanillaBean = function(vanilla, cinnamon) {
    this.vanilla = [1, "bean", vanilla ? vanilla : "Madagascar Bourbon"];
}

3 个答案:

答案 0 :(得分:0)

此处VanillaBean是一个接受两个名为vanillacinnamon的参数的函数。它会在调用时创建一个至少有一个属性vanilla的对象:

var flavour = new VanillaBean("cheap", 250);

flavour.vanilla将为[1, "bean", "cheap"]

(谢谢@FelixKling和@ t.niese。)

this指的是它创建的对象,而不是其他任何其他vanilla属性。

如果您要使用涉及SomeVariable的第一个版本,您仍会获得一个列表,但它只是一个独立变量,而不是任何对象的属性(好吧,window,可能,但是...)

答案 1 :(得分:0)

var a = {};
对象中的

this

a.test = function () { return this; };

在这种情况下,this将为a,因为function是a的成员。

a.t = function () {
  var b = function () { return this; };
  b();
};  

在这种情况下,b不是thiswindow的任何成员。

要理解this,只需检查自己的功能是谁,如果没有任何所有者,则代表窗口。没有所有者的每个功能都由窗口自动拥有。

您可以暂时更改所有者来电。

var b = function () {};
var c = { d: 1 };
b.call(c);

通话功能暂时将所有者更改为cthisc

创建新实例。

function E() { this.h = 2; }
E.prototype = { f: 1 };
E.prototype.g = function () { return this; };
var e = new E();
e.g();

在这种情况下,thiseprototype是一种结构,可让您描述新对象最初的样子。这将是{ h: 2, g: func, f: 1 }

答案 2 :(得分:0)

在html元素中使用时,this指的是DOM中的元素。

示例:

<script type="text/javascript">
    function hover(domElement) {
        domElement.style.backgroundColor = '#CCC';
    }
</script>
<div onmouseover="hover(this);">Hover me</div>

当在非返回函数中使用this时,该函数变为对象构造函数,this引用隐式创建的对象,该函数在使用{{调用函数时自动返回1}}。

示例:

new

没有function Point(x, y) { this.x = x || 0; this.y = y || 0; this.distance = function (point) { return Math.sqrt( Math.pow(point.x - this.x, 2) + Math.pow(point.y - this.y, 2) ); }; } var a = new Point(10, 10); var b = new Point(100, 100); document.write(a.distance(b)); this的相同功能:

new