JavaScript 関數(shù)呼び出し
関數(shù)が呼び出されたときに関數(shù)本體のコードが実行されます。
JavaScript 関數(shù)には 4 つの呼び出しメソッドがあります:
通常の関數(shù)呼び出し
メソッド呼び出し
コンストラクター呼び出し
call() と apply() による間接呼び出し
1. 通常の関數(shù)呼び出し
最もよく使用される関數(shù)呼び出しメソッド (例:
alert("hello");
var result = add(1, 2);
2. メソッド呼び出し
//関數(shù)を定義します
function hello(name) {
alert('hello,' + name);
};
var user = {};
//ユーザーsayHi屬性に割り當(dāng)てられます
user.sayHi = hello;
//メソッド呼び出し
user.sayHi('Zhang San');
通常の関數(shù)呼び出しとメソッド呼び出し 1 つの違い: 「通常の関數(shù)呼び出し」メソッドの場合、関數(shù)の呼び出しコンテキスト (this の値) はグローバル オブジェクト (非厳密モード) または未定義 (厳密モード) です。 「メソッド呼び出し」メソッドでは、これは現(xiàn)在のオブジェクトを指します。この機(jī)能を利用すると、メソッドが明確な戻り値を必要としない場合に直接返すことができ、「メソッドチェーン」を?qū)g現(xiàn)します。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> </head> <body> <p id="demo"></p> <script> function myFunction(a, b) { return a * b; } document.getElementById("demo").innerHTML = myFunction(10, 2); </script> </body> </html>
ネストされた関數(shù)の This: ネストされた関數(shù)では、內(nèi)部関數(shù)は外部関數(shù)から this を継承しません。つまり、內(nèi)部関數(shù)がメソッドとして呼び出されるとき、內(nèi)部関數(shù)の this は現(xiàn)在の呼び出しオブジェクトを指します。內(nèi)部関數(shù)の場合 関數(shù)が関數(shù)として呼び出された場合、this の値はグローバル オブジェクト (非厳密モード) または未定義 (厳密モード) になります。內(nèi)部関數(shù)で外部関數(shù)の this にアクセスするにはどうすればよいですか?これは通常、ローカル変數(shù)に保存され、変數(shù)を通じてアクセスされます:
var obj = {
f : function() {
var self = this;
console.log(this == = obj);//true、これは現(xiàn)在のオブジェクトを指します
f1() ) ;//false、これはグローバルオブジェクトまたは未定義です
console.log(self === obj) ;///true、self は外側(cè)の this、つまり現(xiàn)在のオブジェクトを指します
これはグローバルオブジェクトまたは未定義です
console.log(self === obj);
};3. コンストラクターの呼び出し
new キーワードを使用してオブジェクトが作成されると、コンストラクターが呼び出されます。コンストラクターに仮パラメーターがない場合は、括弧を省略できます:
var obj = new Object();//
var obj = new Object;
と同等
コンストラクターを呼び出して新しいオブジェクトを作成します。この新しいオブジェクトはコンストラクターの呼び出しコンテキスト (this の値) になります:
function User(name) {
this.name=name;
Console.debug(this);
}
var user = new User('張三');
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> </head> <body> <p id="demo"></p> <script> function myFunction(arg1, arg2) { this.firstName = arg1; this.lastName = arg2; } var x = new myFunction("John","Doe") document.getElementById("demo").innerHTML = x.firstName; </script> </body> </html>
4. call() と apply() による間接呼び出し
Javascript の関數(shù)もオブジェクトであり、メソッドを持ちます。このうち、call() と apply() は関數(shù)を間接的に呼び出すために使用できます。 call() の最初のパラメータは呼び出しコンテキスト (つまり this の値) を指定するために使用され、後続のパラメータは呼び出し関數(shù)に渡される実際のパラメータです。
var name = 'A';
alert (this.name);
}
showName();//A、これはグローバルオブジェクトです
showName .call(user);//B、これはユーザー オブジェクトです