この記事では、楼竹の理解力と実践能力がまだ成熟していないとき、李占先生から多くのことをコピーし、「知識の備蓄」としてブログに書いたと言われています。今回もそれは避けられない。第 5 章に目を移したとき、私はこの章の 2 番目の段落に深く惹かれ、感銘を受けました。「関数はオブジェクトの特性をすべて備えています。関数をオブジェクトとして呼び出すことができます。実際、関数はオブジェクトですが、通常の関数とは異なります」オブジェクトには追加の括弧 "{}" 演算子があり、これは関数のロジックを実行するために使用されます。つまり、関数自体は呼び出すことができますが、まったく同じであることを除いて、一般的なオブジェクトを呼び出すことはできません。短い言葉ですが、オブジェクトと機能の関係についての奥深い説明です。以下では、Lou Zhu が、彼が作成したいくつかの簡単なコードを通じて、JavaScript の組み込みオブジェクトと関数の関係を示します。
1. Function is Object、Object is Function
alert(FunctioninstanceofObject); // true
alert(ObjectinstanceofFunction); //true
ご覧のとおり、 Instanceof 演算子の場合、関数はオブジェクトであり、オブジェクトは関数です。
2. 1 が true なので、Object は Function によって拡張されたプロトタイプ メソッドを「取得」できますか?
alert(Object.funcMethod) ; // 未定義
Function.prototype.funcMethod = function() {
/*ここに関数メソッドのコードがいくつかあります*/
}
alert(Function.funcMethod); funcMethod);
alert(Function.funcMethod === Object.funcMethod); //true
関数用に拡張したプロトタイプ メソッド funcMethod は、魔法の機能を実現しました。 「ただで何かを手に入れる」。
3. 1 と 2 が両方とも true なので、Function は Object extension のプロトタイプ メソッドを「取得」できますか? !
コード alert( Function.objMethod ); // 未定義
Object.prototype.objMethod = function() {
/*ここにオブジェクト メソッドのコードがいくつかあります*/
}
alert(Object.objMethod); alert(Function .objMethod); //true か false か?
上記のコードがポップアップ表示されます。 毛織物?率直に言って、この記事全体にわたる Lou Zhu の率直かつ単純な発言に基づいて、結果はすでにご存知のはずです。ここでは答えを発表しません。
最後に、Rong Louzhu がナルシストであることを誇りに思います。個人的には、上記の 3 つのコードは、「関数がオブジェクトの本質である」ことを検証する元の本のコードよりも説得力があるはずだと思います。