2011-07-14 21 views
3

私は一般的なjsにstartsWithという拡張関数を作成しました。IE9 this = DispHTMLWindow2プロトタイプの関数内

それはこのように書きます:「オブジェクトはプロパティまたはメソッド 『のindexOf』をサポートしていません」:

String.prototype.startsWith = function (str) { 
if (this.indexOf(str) == 0) { 
    return true; 
} 
return false; 
} 

IE9で動作しているとき、私はというエラーを取得します。

デバッガを見るとDispHTMLWindow2のように見えます。

助けが必要ですか?

ありがとうございました。

+1

から取られたとしてあなたは次のことを試みることができます。 http://jsfiddle.net/sQt5C/ – Gaurav

+1

どうやってそれを呼びますか?メソッドとしてではなく関数として呼び出されているように思えます。 –

+1

あなたは文字列を渡していないのと同じように聞こえます。あなたが(this.constructor!== String)return – Christian

答えて

1

これはIE9で私の作品this site

String.prototype.startsWith = function(str) 
{return (this.match("^"+str)==str)} 

String.prototype.endsWith = function(str) 
{return (this.match(str+"$")==str)} 

String.prototype.trim = function(){return 
(this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""))} 
+0

を返すならば、コンストラクタチェックを追加することで、それを忘れることを防ぐことができます。RegExpは 'startsWith'と' endsWith'の少し不合理です。 'str'に特殊文字が含まれていれば、それらはどちらも壊れてしまうことは言うまでもありません。 –

関連する問題