この行の問題:
self.v = (function(){return self.v; this.clear = function(){self.v = '';}})()
...複数の行に分割すると、より明白になります。
self.v = (function(){
return self.v;
this.clear = function(){
self.v = '';
}
})()
これは、最初の行に戻る、すぐに呼び出される関数式であるため、その行に到達することはありませんthis.clear = ...
。返さself.v
れる値 はundefined
その時点で、つまり、self.v
その値を割り当てるプロパティも になりますundefined
。つまり、この行では次のようになります。
self.v.prototype = function clear() {
...エラーが発生しますTypeError: Cannot set property 'prototype' of undefined
。
関数の混乱を考えると、何をしようとしているのかを正確に伝えるのは少し難しいですがtheUploader()
、これを実行できるようにしたいと言ったことを考えると:
var temp = new theUploader('smart');
temp.v.clear();
次に、それ自体がメソッド.v
を持つオブジェクトであるプロパティを作成する必要があるため、次のようになります。.clear()
function theUploader(virtualField)
{
var self = this;
self.v = {}; // create a v property that is an object
self.v.clear = function(){self.v = '';}; // add a method to v
}
...そうするでしょう。clear
または、オブジェクト リテラルで関数を直接定義することもできます。
self.v = {
clear : function(){self.v = '';}
};
self.v.clear()
(いずれにせよ、呼び出すと実際に空の文字列でプロパティが上書きされることは私には意味がありませんが.v
、それが必要な場合は、これがどのように実行できるかです。)