JavaScript の機能を拡張する正しい方法 (翻訳)_JavaScript のヒント
今朝、記事 「JavaScript Weekly Introduction」[第 3 号]を見て、その中に記事 (JavaScript の拡張 – 正しい方法) を見つけました。かなり良いです、翻訳してください。この記事は一語一語翻訳されていません。できるだけ理解しやすいように努めています。
元のアドレス: Extending JavaScript – The Right Way
以下は翻訳です
JavaScript には多くの強力なメソッドが組み込まれています。しかし、必要な特定の関数が組み込みメソッドで利用できない場合があります。どうすれば JavaScript 関数をエレガントに拡張できますか?
たとえば、最初の文字を大文字にするために Capitalize() メソッドを追加したいとします。通常、次のように記述します。
if(!String.prototype.capitalize)
{
String.prototype.capitalize = function()
{
return this.slice(0, 1).toUpperCase() this.slice(1).toLowerCase();
}
}
上記のコードは通常通り使用できますが、コード:
var strings = "やった";
for(i in strings) console.log(i ":" strings[i]);
得られる結果は次のとおりです:
0: y
1: a
2: y
capitalize: function () { return this.slice(0, 1).toUpperCase() this.slice(1).toLowerCase() }
Thisは明らかに私たちが望む結果ではありませんが、追加したメソッドが出力される理由は、追加したメソッドの enumerable 属性がデフォルトで true に設定されているためです。
列挙プロパティ (enumerable) を false に設定し、defineProperty メソッドを使用して機能を拡張するだけで、この問題を回避できます。
if(!String.prototype.capitalize)
{
Object.defineProperty(String.prototype, 'capitalize', {
値: function()
{
return this.slice(0,1).toUpperCase() this.slice(1).toLowerCase();
},
列挙可能: false
});
}
for(i in strings) console.log(i ":" strings[i]); 🎜>
得られる結果は次のとおりです:
1: a
2: y
ループを介した出力の欠如は意味しないことに注意してください。次のコードの定義を参照してください:
出力:
この方法を使用して JavaScript 関数を拡張し、独自のオブジェクトを定義し、いくつかのデフォルト値を設定できます。
以下は、独自のプロジェクトで使用できる他の拡張メソッドです。
「200px」のような文字列を数値 200 に変換します。
{
value: function()
{
return parseInt(this.split('px')[0]);
} 、
列挙可能: false
});
}
String.isHex()
文字列が「#CCC」や「#CACACA」などの 16 進数で表現されているかどうかを判断します
if(!String.prototype.isHex)
{
Object.defineProperty(String.prototype, 'isHex',
{
value: function()
{
return this.substring(0,1) == '#' &&
(this.length == 4 || this.length = = 7) &&
/^[0-9a-fA-F] $/.test(this.slice(1))
},
列挙可能: false
}; > }
文字列反転:
{
Object.defineProperty(String.prototype, 'reverse',
{
value: function( )
{
return this.split( '' ).reverse().join( '' );
},
列挙可能: false
}); >
String.wordCount()
スペースで区切って単語の数をカウントします
{
値: function()
{
return this.split(' ').length;
},
列挙可能: false
});
String.htmlEntities()
などの HTML タグは特殊文字としてエンコードされます。 > コードは次のとおりです:
}
String.stripTags()
HTML タグを削除します:
コードをコピーします
if(!String.prototype.stripTags)
}
String.trim()
先頭と末尾のスペース:
コードをコピー
if(!String.prototype .trim)
}
文字列。 tripNonAlpha()
アルファベット以外の文字を削除します:
コードをコピー
if(!String.prototype.stripNonAlpha)
コードをコピー
コードは次のとおりです。
if(!Object .prototype.sizeof)
{
{
value: function()
{
この方法で JS ネイティブ オブジェクトの関数を拡張するのは非常に良いことですが、必要な場合 (プロジェクトで頻繁に使用される場合) を除き、ネイティブ オブジェクトの関数を直接拡張することはお勧めできません。グローバル変数が発生するためです。汚染。
また、記事内の pxToInt() メソッドは必要ありません。JS の parseInt() でこのような関数を直接完了できます: parsetInt("200px")===200
には問題があるようです。 htmlEntities メソッドをもう 1 つ提供します:
if(!String.prototype.htmlEntities)
{
Object.defineProperty(String.prototype, 'htmlEntities',
{
value: function()
{
var div = document.createElement("div");
if(div.textContent){
div.textContent=this;
else{
div.innerText=this; }
return div.innerHTML;
},
列挙可能: false
});

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

楽なWebページレイアウトのためにjQueryを活用する:8本質的なプラグイン jQueryは、Webページのレイアウトを大幅に簡素化します。 この記事では、プロセスを合理化する8つの強力なjQueryプラグイン、特に手動のウェブサイトの作成に役立ちます

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

10の楽しいjQueryゲームプラグインして、あなたのウェブサイトをより魅力的にし、ユーザーの粘着性を高めます! Flashは依然としてカジュアルなWebゲームを開発するのに最適なソフトウェアですが、jQueryは驚くべき効果を生み出すこともできます。また、純粋なアクションフラッシュゲームに匹敵するものではありませんが、場合によってはブラウザで予期せぬ楽しみもできます。 jquery tic toeゲーム ゲームプログラミングの「Hello World」には、JQueryバージョンがあります。 ソースコード jQueryクレイジーワードコンポジションゲーム これは空白のゲームであり、単語の文脈を知らないために奇妙な結果を生み出すことができます。 ソースコード jquery鉱山の掃引ゲーム

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

このチュートリアルでは、Ajaxを介してロードされた動的なページボックスの作成を示しており、フルページのリロードなしでインスタントリフレッシュを可能にします。 JQueryとJavaScriptを活用します。カスタムのFacebookスタイルのコンテンツボックスローダーと考えてください。 重要な概念: ajaxとjquery

このチュートリアルでは、jQueryを使用して魅惑的な視差の背景効果を作成する方法を示しています。 見事な視覚的な深さを作成するレイヤー画像を備えたヘッダーバナーを構築します。 更新されたプラグインは、jQuery 1.6.4以降で動作します。 ダウンロードしてください

このJavaScriptライブラリは、Cookieに依存せずにセッションデータを管理するためにWindow.nameプロパティを活用します。 ブラウザ全体でセッション変数を保存および取得するための堅牢なソリューションを提供します。 ライブラリは、セッションの3つのコア方法を提供します
