2016-12-12 3 views
0

私はプロトタイプの中でthisを参照する必要があるコードを書いていますが、それを関数にすることはできません。 Javascriptはこれをやらせませんが、配列と文字列のlengthプロパティのように思えます。私はlengthが組み込まれていることを知っています。私のコードはそうではありませんが、もしできれば、私はどのように実装していますか?lengthプロパティーはどのように機能しますか?

私が試した:

String.prototype.prototypeName = (function(aThing){ 
    //Do whatever I need to do here 
})(this); 

しかしthisは、関数の外に呼び出されるため、グローバルオブジェクトへの参照のことを。

String.prototype.prototypeName = function(aThing){ 
    //Do whatever I need to do here referencing this 
}; 

しかし、これは機能であり、私はそれを持つことができません。

ユーザが関数を呼び出してtypeofを使用し、プロトタイプが文字列を返すことができるため、関数を持つことができません。たとえば :

String.prototype.reverse = "Put something that is the reversed string (or this)"; 
console.log("Stuff"); //"ffutS" 
console.log("Anything"); //gnihtynA 
+3

getterを使用するhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get –

+1

"*これをプロトタイプ内で参照しますが、関数*にすることはできません。"、 *プロトタイプは文字列を返すことになっています* " - 何?あなたが求めているものをどのように使用するのかの期待される結果を示してください。 – Bergi

+0

いいえ、 '.length'が配列に対して行うことを再実装することは不可能です。 – Bergi

答えて

0

あなたはプロトタイプ関数を呼び出すことなく、計算されたプロパティにアクセスするためにJavascript getterを使用することができます。これはIE9 +のみであることに注意してください。

関連する問題