0

私はjavascriptを学んでおり、javascriptがthis.vanilla.

これは書くことと同じですか:

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

parameter と同じ名前を使用すると、非常に紛らわしいようvanillaです。

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

3 に答える 3

0

VanillaBeanという 2 つの引数を受け取る関数を次に示します。以下のように呼び出されると、少なくとも 1 つのプロパティを持つオブジェクトが作成されます。vanillacinnamonvanilla

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

flavour.vanillaになります[1, "bean", "cheap"]

(@FelixKling と @t.niese に感謝します。)

thisそれが作成するオブジェクトを参照し、他のものの他のvanillaプロパティではありません。

あなたが関与する最初のバージョンを使用する場合SomeVariableでも、リストを取得しますが、それはスタンドアロンの変数にすぎず、オブジェクトのプロパティではありません (まあwindow、おそらく、しかし...)

于 2013-09-05T09:00:52.820 に答える
0
var a = {};

thisオブジェクト内:

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

この場合thisはa のメンバーであるaためです。function

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

この場合b、 は何のメンバーでもありませthiswindow

理解するthisには、関数の所有者を確認し、所有者がいない場合はウィンドウを表します。所有者のないすべての関数は、ウィンドウによって自動的に所有されます。

追加の所有者の呼び出しを一時的に変更できます。

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

関数を呼び出すと、一時的に所有者が に変更されcthisになりますc

新しいインスタンスを作成しています。

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

この場合thiseです。prototype新しいオブジェクトが最初にどのように見えるかを記述する可能性を与える構造です。ここになります{ h: 2, g: func, f: 1 }

于 2013-09-05T09:08:20.677 に答える
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、暗黙的に作成されたオブジェクトを参照します。このオブジェクトは、関数が で呼び出されたときに自動的に返されます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:

function Point(x, y) {
    obj = {};

    obj.x = x || 0;
    obj.y = y || 0;
    obj.distance = function (point) {
        return Math.sqrt(
            Math.pow(point.x - this.x, 2) +
            Math.pow(point.y - this.y, 2)
        );
    };

    return obj;
}

var a = Point(10, 10);
var b = Point(100, 100);

document.write(a.distance(b));
于 2013-09-05T09:10:53.093 に答える