独自の JS クラスを作成するために必要なコア コード library_js オブジェクト指向
(function(win) {
var toString = Object.prototype.toString;
var hasOwn = Object.prototype.hasOwnProperty;
var class2type = {};
class2type[ "[オブジェクトブール値]"] = "ブール値";
クラス2タイプ["[オブジェクト番号]"] = "数値";
クラス2タイプ["[オブジェクト文字列]"] = "文字列"; ["[オブジェクト関数]"] = "関数";
クラス2タイプ["[オブジェクト配列]"] = "配列";
クラス2タイプ["[オブジェクト日付]"] = "日付"; class2type["[object RegExp]"] = "regexp";
class2type["[object Object]"] = "object";
win.type = function(obj) {
return obj == null ? String(obj) : class2type[toString.call(obj)] || "オブジェクト";
win.isBoolean = function(obj) {
return type(obj) "ブール値";
};
win.isNumber = function(obj) {
戻り値の型(obj) === "数値";
win.isString = function( obj) {
戻り値の型(obj) === "文字列";
win.isDate = function(obj) {
戻り値の型(obj) === "日付";
};
win.isRegExp = function(obj) {
return type(obj) === "regexp";
win.isObject = function(obj); 🎜>戻り値の型(obj) === 'オブジェクト';
};
win.isFunction = function(obj) {
return type(obj) === "関数";
};
win.isArray = function(obj) {
return type(obj) === "配列";
};
win.isWindow = function(obj) {
return obj
&& typeof obj === "object"
&& "setInterval" in obj;
};
win.isNumeric = function(obj) {
return !isNaN(parseFloat(obj)) && isFinite(obj);
};
win.isPlainObject = function(obj) {
if (!obj
|| type(obj) !== "オブジェクト"
|| obj.nodeType
|| isWindow(obj) )) {
false を返します;
}
try {
if (obj.constructor
&& !hasOwn.call(obj, "constructor")
&& !hasOwn.call(obj.constructor.prototype, "isPrototypeOf" )) {
false を返します;
}
} catch (e) {
return false;
}
var キー;
for (obj のキー) {
}
リターンキー === 未定義 || hasOwn.call(obj, key);
};
win.isEmptyObject = function(obj) {
for ( obj の変数名) {
return false;
}
true を返します。
};
win.isPrimitive = function(obj){
var type = typeof obj;
戻り値の型 === '文字列' ||タイプ === '数値' ||タイプ === 'ブール値';
};
//HTMLElement
win.isElement = function(obj){
return obj ? obj.nodeType === 1 : false;
};
//TextNode
win.isTextNode = function(obj){
return obj ? obj.nodeName === "#text" : false;
};
win.isIterable = function(obj){
return (obj && typeof obj !== 'string') ? obj.length !== 未定義 : false;
};
win.isDefined = function(obj){
obj の型を返します !== '未定義';
};
win.error = function(msg) {
throw new Error(msg);
};
win.now = function() {
return (new Date()).getTime();
};
win.print = function(value) {
document.write(value);
};
win.println = function(value) {
print(value);
document.write("
");
};
win.each = function(object, callback, args) {
var name, i = 0,
length = object.length,
isObj = (length === 未定義 || isFunction(物体));
if (args) {
if (isObj) {
for (オブジェクト内の名前) {
if (callback.apply(object[name], args) === false) {
休憩。
}
}
} else {
for (; i < length;) {
if (callback.apply(object[i ], args) === false) {
休憩;
}
}
}
} else {
if (isObj) {
for (オブジェクト内の名前) {
if (callback.call(object[name],名前, オブジェクト[名前]) === false) {
break;
}
}
} else {
for (; i < length;) {
if (callback.call(object[i], i, object[i ]) == = false) {
ブレイク;
}
}
}
}
オブジェクトを返します。
};
win.Array.prototype.toString = function(){
return "[" this.join() "]"
}
win.extend = function() {
var オプション、
名前、
src、
コピー、
copyIsArray、
クローン、
ターゲット = 引数[0] || {}、
i = 1、
length = argument.length、
deep = false;
// ディープコピー状況を処理します
if ( typeof target === "boolean" ) {
deep = target;
ターゲット = 引数[1] || {};
// ブール値とターゲットをスキップします
i = 2;
}
// ターゲットが文字列または何かである場合の処理 (ディープコピーで可能)
if ( typeof target !== "object" && !isFunction(target) ) {
target = {};
}
// 引数が 1 つだけ渡された場合、jQuery 自体を拡張します
if ( length === i ) {
target = this;
--私;
}
for ( ; i < length; i ) {
// null 以外/未定義の値のみを処理します
if ( (options = argument[ i ]) != null ) {
// 基本オブジェクト
for ( name in options ) {
src = target[ name ]; を拡張します。
copy = オプション[名前];
// 終わりのないループを防止
if ( target === copy ) {
continue;
}
// プレーンオブジェクトまたは配列をマージする場合は再帰
if ( deep && copy && ( isPlainObject(copy) || (copyIsArray = isArray(copy)) ) ) {
if ( copyIsArray ) {
copyIsArray = false;
clone = src && isArray(src) : [];
} else {
clone = src && isPlainObject(src) : {}; }
// 元のオブジェクトは移動せず、クローンを作成します。
target[ name ] = extend( deep, clone, copy )
// 未定義の値を取り込まない
} else if ( copy !== unknown ) {
target[ name ] = copy;
}
}
}
}
// 変更されたオブジェクトを返します
return target; 🎜> };
})(window);
extend メソッドを使用しない場合は、次のように独自のコンポーネントを作成できます。
コードをコピー
proto.append = function(value){
this.datas.push(value); },
proto.toString = function(){
return this.datas.join("")
}
})(window); extend メソッドを使用する場合は、次のように実行できます。 コンポーネントを記述します:
コードをコピー
},
toString : function(){
return this.datas.join("");
}
});
})(window);
これら 2 つのメソッドは同じ効果があります。 extend メソッドは、第 1 章で説明したように、プラグイン開発などのさらに多くのイベントを実行することもできます。2 つのメソッドは非常に似ています。
もちろん、もともと jQuery プラグインを作成したかった場合は、jQuery の extend を使用するだけです。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

フロントエンドのVSCodeと同様に、パネルドラッグアンドドロップ調整機能の実装を調べます。フロントエンド開発では、VSCODEと同様のVSCODEを実装する方法...

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...
