capitalize: function () { return this.slice(0, 1).toUpperCase() this.slice(1).toLowerCase() }
Thisは明らかに私たちが望む結果ではありませんが、追加したメソッドが出力される理由は、追加したメソッドの enumerable 属性がデフォルトで true に設定されているためです。
列挙プロパティ (enumerable) を false に設定し、defineProperty メソッドを使用して機能を拡張するだけで、この問題を回避できます。
Object .defineProperty(String.prototype, 'pxToInt',
{
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
}; > }
String.reverse()
文字列反転:
if(!String.prototype.reverse)
{
Object.defineProperty(String.prototype, 'reverse',
{
value: function( )
{
return this.split( '' ).reverse().join( '' );
},
列挙可能: false
}); >
String.wordCount()
スペースで区切って単語の数をカウントします
{
Object.defineProperty(String.prototype, 'wordCount',
{
値: function()
{
return this.split(' ').length;
},
列挙可能: false
});
String.htmlEntities()
などの HTML タグは特殊文字としてエンコードされます。 > コードは次のとおりです:
列挙可能: false
});
}
String.stripTags()
HTML タグを削除します:
コードをコピーします
コードは次のとおりです:
if(!String.prototype.stripTags)
{
Object.defineProperty(String.prototype, 'stripTags', { value: function() { return this.replace(/?[^>] >/gi, ''); } ,
enumerable: false
});
}
String.trim()
先頭と末尾のスペース:
コードをコピー
コードは次のとおりです。
if(!String.prototype .trim)
{
Object.defineProperty(String.prototype, 'trim', { value: function() { return this.replace(/^s* /, "").replace(/s*$/, ""); },
列挙可能: false
});
}
文字列。 tripNonAlpha()
アルファベット以外の文字を削除します:
コードをコピー
コードは次のとおりです:
if(!String.prototype.stripNonAlpha)
{
Object.defineProperty (String.prototype, 'stripNonAlpha', { value: function() { return this.replace(/[^A-Za-z ] /g, ""); 列挙可能: false
}); > Object.sizeof()
{one: “and”, two: "and"} などのオブジェクトのサイズをカウントします
コードをコピー
コードは次のとおりです。
if(!Object .prototype.sizeof)
{
Object.defineProperty(Object.prototype, 'sizeof' ,
{
value: function()
{
var counter = 0;
for(this) counter ; return counter;列挙可能: false }) } この方法で 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
});