JS補助関数inherit()に関する質問_基礎知識

WBOY
リリース: 2016-05-16 17:38:19
オリジナル
1011 人が閲覧しました

最近「The Definitive Guide to JavaScript (Sixth Edition)」を読んでいたのですが、第 6 章 P122 に次のコードがあります。

コードをコピー コードは次のとおりです:

// プロトタイプから継承されたプロパティを返します。 object proto New object
//ここで ES5 Object.create() 関数を使用できます
function respect(proto) {
//proto はオブジェクトですが、null にすることはできません
if( proto == null) throw TypeError();
if(Object.create) return Object.create(proto); //Object.create() が存在する場合は、それを使用します
var t = typeof proto;それ以外の場合はさらに確認します
if(t!=='object' && t!=='function') throw TypeError();
var F = function() {} // 空のコンストラクターを定義します
F.prototype = proto; // プロトタイプのプロパティを proto
return new F() に設定します。 // F() を使用して proto
}
を作成します。

ヘルパー関数の目的は、明らかに、親クラスのプロトタイプを継承する新しいオブジェクトを作成することです

質問

以下の判断は今のところ理解できません

コードをコピー コードは次のとおりです。

var t = typeof proto; // それ以外の場合は、さらに確認してください
if(t!=='object' && t!=='function') throw TypeError();

私たちの印象では、プロトタイプ オブジェクトはオブジェクトであるか、直接リテラルである必要があるため、渡されるパラメーターの型は「関数」型になります

理解しました

関数もオブジェクトであり、独自のプロパティやメソッドを持つこともできます。待ってください。これらは静的なプロパティとメソッドではありません。これは、関数を属性を追加できるオブジェクトとして扱うことを指します

コードをコピー コードは次のとおりです:

// 関数の型を渡すテスト
var func = function() {};
func.text = 'お疲れ様';
func.getText = function() {
return func.text;
};
コンソール。 log(typeof func); // 'function'
// 関数の型を渡し、func でプロトタイプ化された新しいオブジェクトを返します
var subFunc = assign(func);
console.log(subFunc.getText() )); // 出力: 'よくやった'

わかりました、証拠です。 「関数」型を渡すことができることがわかりました

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート