私は、他の関数から関数を構築するプロジェクトに取り組んでいます。物事を単純化するためにクラスを作成するという考えがありましたが、 を使用せずに動作させることはできませんでした__proto__
。
これが基本的に私のビジョンです。
function MyFunction () {
// ...
}
var myFn = new MyFunction();
myFn(); // executes without error
myFn instanceof MyFunction; // returns true
次のコードは、__proto__
function MyFunction () {
var fn = function () { return 'hello'; };
fn.__proto__ = this;
return fn;
}
var myFn = new MyFunction();
alert( myFn() ); // hello
alert( myFn instanceof MyFunction ); // true
これは私が使ってみたものですvalueOf
function MyFunction () {
this.fn = function () { return 'hello'; };
this.valueOf = function () { return this.fn; };
}
var myFn = new MyFunction();
alert( myFn instanceof MyFunction ); // true
alert( myFn.valueOf()() ); // hello
alert( myFn() ); // error
のすべてのプロパティを含むように関数を拡張する別の方法を次に示しますMyFunction
。
function MyFunction () {
this.foo = 'hello'
var fn = function () { return 'hello'; };
for ( var i in this ) {
fn[ i ] = this[ i ];
}
return fn;
}
var myFn = new MyFunction();
alert( myFn() ); // hello
alert( myFn.foo ); // hello
alert( myFn instanceof MyFunction ); // false
__proto__
規格外だから使いたくない また、これはちょっと変わったアイデアでした。実際に機能させたいと思っていますが、それが不可能な場合は、私は生きています。しかし、私の質問は、私がやりたいことは可能ですか?