3

John Resig 著の「Secrets of the JavaScript Ninja」という本の中で、なぜだろうか。48に次のように書かれています。

関数が呼び出されるたびに、 ... という名前の暗黙的なパラメーターthis も関数に渡されます。

this以前、それは実際にはキーワードであると読んだので、少し戸惑いました。そして多分それは本当に問題ではありません

function f() {
    this = {};
}

f();

その場合、Chrome または Node.js のいずれかが、割り当ての左辺が無効であるというエラーを発生させます。thisが実際に暗黙のパラメーターである場合、その行はエラーを発生させないのでしょうか? では、この本にこの間違いがthisあり、そうではないというのは本当なのだろうか?

(更新: JavaScript: The Definitive Guide 6th Edition と ECMA-262 も再確認しましたが、どちらもthisキーワードであると言っています)...

4

4 に答える 4

2

次のように書くと、それは確かに暗黙の引数です。

var foo = {
    bar: function() {
        console.log(this);  // Will be foo.
    }
};

foo.bar();

this明示的に記述したかのように、暗黙的にfooinsideにバインドされます。bar()

foo.bar.call(foo);
于 2013-02-13T07:02:46.080 に答える
0

両方です!

関数宣言の一部ではないため、暗黙のパラメーターです。

function foo()
{
    // this === window
}

foo();

それでも、JavaScript の実行方法により、他のオブジェクト参照と同じように存在しますfoo()

foo.call(window)

ただし、値を割り当てることができないなど、特定のルールによって管理されるという意味でのキーワードでもあります。

于 2013-02-13T07:05:55.387 に答える