ソース コードを参照してください:
function clone( o) {
var F = function(){};
F.prototype = o;
return new F();
var ExtObject = Ext.Object = {
chain: function (object) {
TemplateClass.prototype = object;
var result = new TemplateClass();
TemplateClass.prototype = null;
return result;
}
}
jquery で継承がどのように機能するかをもう一度見てみましょう。
return new jQuery.fn.init( selector, context, rootjQuery );
};
jQuery.fn = jQuery.prototype = {
constructor: jQuery,
init: function( selector, context, rootjQuery ) {
-------------- -- ------
}
}
--------
jQuery.fn.init.prototype = jQuery .fn ;
jquery はより高度で、jQuery.fn.init を使用して実行できますが、考え方は同じです。
$.log(" Object.create 実装は最初のパラメーターのみを受け入れます。")
}
function F() {}
F.prototype = o;
return new F();
es5 の正式バージョンを確認する、互換性パッチを見つけました:
Object.create = function create(prototype,properties) {
var オブジェクト;
if (プロトタイプ === null) {
オブジェクト = { "__proto__": null };
} else {
if (プロトタイプ != "オブジェクト") {
throw new TypeError("typeofprototype[" (typeofprototype) "] != 'object'");
var Type = function () {}; prototype ;
object = new Type();
// IE には `Object.getPrototypeOf` の組み込み実装がありません
// `__proto__` もありませんが、これを手動で設定すると
// `Object.getPrototypeOf` が
で期待どおりに動作することを保証します。// `Object.create` を使用して作成されたオブジェクト
object.__proto__ =
}
if (properties !== void 0) {
Object.defineProperties(object,properties);
}
}
上記のコードは相対的に考慮されます包括的ですが、Object.defineProperties への追加パッチの導入が必要で、ソース コードは比較的大きくなります。
コードをコピー
コードは次のとおりです:
// ES5 15.2.3.6
// http://es5.github.com/#x15.2.3.6
// WebKit および IE8 標準モード用のパッチ
// hax
// 関連する問題: https://github.com/kriskowal/es5-shim/issues#issue/5
// IE8 リファレンス:
// http://msdn.microsoft.com/ en-us/library/dd282900.aspx
// http://msdn.microsoft.com/en-us/library/dd229916.aspx
// WebKit のバグ:
// https:// bugs.webkit.org/show_bug.cgi?id=36423
function dosDefinePropertyWork(object) {
try {
Object.defineProperty(object, "sentinel", {});
オブジェクトの「センチネル」を返します。
} catch (例外) {
// false を返します
}
}
// 指定されている場合、defineProperty が機能するかどうかを確認します。それ以外の場合、
// 部分的にシムします。
if (Object.defineProperty) {
var definePropertyWorksOnObject = dosDefinePropertyWork({});
var definePropertyWorksOnDom = ドキュメントの種類 == "未定義" ||
doesDefinePropertyWork(document.createElement("div"));
if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
vardefinePropertyFallback = Object.defineProperty;
}
}
if (!Object.defineProperty || definePropertyFallback) {
var ERR_NON_OBJECT_DESCRIPTOR = "プロパティの説明はオブジェクトである必要があります: ";
var ERR_NON_OBJECT_TARGET = "非オブジェクトで呼び出された Object.defineProperty: "
var ERR_ACCESSORS_NOT_SUPPORTED = "この JavaScript エンジンではゲッターとセッターを定義できません "
";
Object.defineProperty = function defineProperty(object, property, descriptor) {
if ((typeof object != "object" && typeof object != "function") || object === null) {
新しい TypeError(ERR_NON_OBJECT_TARGET オブジェクト) をスローします。
}
if ((記述子のタイプ != "オブジェクト" && 記述子のタイプ != "関数") || 記述子 === null) {
throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR 記述子);
}
// I8 の DOM 要素に対して実際のdefineProperty
// を使用するという勇敢な試みを行ってください。
if (definePropertyFallback) {
try {
return definePropertyFallback.call(Object, object, property, descriptor);
} catch (例外) {
// 実際のシムが機能しない場合は shim を試します
}
}
// データ プロパティの場合。
if (owns(descriptor, "value")) {
// "writable"、"enumerable"、または "configurable" の場合はサイレントに失敗します
// 要求されたがサポートされていません
/*
// 代替アプローチ:
if ( // これらの機能は実装できません。false は許可しますが、true は許可しません
!(owns(descriptor, "writable") ? descriptor.writable : true) ||
!(owns(descriptor, "enumerable") ? descriptor.enumerable : true) ||
!(owns(descriptor, "configurable") ? descriptor.configurable : true)
)
throw new RangeError(
「Object.defineProperty のこの実装は、"
"構成可能、列挙可能、または書き込み可能をサポートしていません。"
);
*/
if (supportsAccessors && (lookupGetter(object, property) ||
lookupSetter(object, property)))
{
// アクセサーは // `__proto__` は、継承された
// アクセサーにヒットしないようにするためのプロパティを定義する際に、安全に `__proto__` をオーバーライドできます。
var プロトタイプ = object.__proto__;
object.__proto__ = プロトタイプのオブジェクト;
// getter / setter がオブジェクト自体に定義されている可能性があるため、とにかくプロパティを削除します。
//
オブジェクト[プロパティ]を削除します。
オブジェクト[プロパティ] = 記述子.値;
// 元の `__proto__` を設定します。
object.__proto__ = プロトタイプ;
} else {
オブジェクト[プロパティ] = 記述子.値;
}
} else {
if (!supportsAccessors) {
throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
}
// ここまで進めば、ゲッターとセッターを定義できるようになります。
if (owns(descriptor, "get")) {
defineGetter(object, property, descriptor.get);
}
if (owns(descriptor, "set")) {
defineSetter(object, property, descriptor.set);
}
}
オブジェクトを返します。
};
}
// ES5 15.2.3.7
// http://es5.github.com/#x15.2.3.7
if (!Object.defineProperties) {
オブジェクト。 defineProperties = function defineProperties(object,properties) {
for (プロパティの var プロパティ) {
if (owns(properties, property) && property != "__proto__") {
Object.defineProperty(object,プロパティ、プロパティ[プロパティ]);
}
}
オブジェクトを返します。
};
}
EcmaScript6 のクラス継承。
class module extends Base {
constructor() {
代制
代次:
if (!Object.create) {
Object.create = function create(o) {
var F = function(){};
F.プロトタイプ = o;
var result = new F();
F.prototype = null;
結果を返します。
}
}

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

ホットトピック









