1

例えば

var contents = 'some text';

function fileSave(path){
// I'll handle saving the file, but I need the file contents
}

contents.fileSave('index.html');

したがって、関数がcontents変数で楽しい場合、関数は変数にアクセスできます。JavaScriptでreplace()がどのように機能するかと同じです。

元。

str.replace();

しかしこの場合

contents.fileSave();

変数は交換可能であり、関数は任意の変数に適用されます。

すみません、初心者..

4

4 に答える 4

2

これは、変更せずにそれを行うためのより良い方法かもしれませんString.prototype

function fileEditor(path) {
    this.save = function(data) {
       // do something with path & data
    }
}

使用法は、

var someFile = new fileEditor("index.html");
someFile.save("some text");
于 2012-12-01T22:31:40.587 に答える
1

すべての文字列にメソッドを追加する場合は、に追加しますString.prototype

String.prototype.fileSave = function(path) {
    var str = this + "";
    // work with the string
    console.log(str, path);
};

ただあなたの環境に注意してください。ネイティブプロトタイプを拡張すると、他のコードと競合する可能性があります。それが問題になるかどうかは自分で決める必要があります。

var contents = 'some text';

contents.fileSave('index.html'); // some text index.html
于 2012-12-01T22:28:52.957 に答える
0

所有していないオブジェクトのプロトタイプは絶対に編集しないでください。解決策1:コンストラクター関数を使用して、失われたソースが書き込んだとおりに新しいオブジェクトを作成します。解決策2:オブジェクトリテラルを介してオブジェクトを宣言します。

var content={
    text:"loremipsum",
    save:function(){ // do work here }
}

そしてcontent.save()を介して保存します。

于 2012-12-01T22:56:36.750 に答える
0

このコードは、関数 newMethod をすべての String インスタンスにアタッチします。他のタイプに対しても同様に行うことができます。

newMethod = function (signature) {...}
String.prototype.newMethod = newMethod
'a'.newMethod()

他の人が指摘したように、これは最善の方法ではないかもしれませんが、javascript がどのように機能するかを理解することは興味深いかもしれません (まあ、少なくとも javascript でプロトタイプを始めるには)。

于 2012-12-01T22:35:06.137 に答える