我正在从事一个涉及从其他功能构建功能的项目。我有编写一个类来简化事情的想法,但如果不使用__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__
,因为它是非标准的。此外,这是一个奇怪的想法,我真的很想让它发挥作用,但如果不可能,我会活下去。但我想我的问题是,我想做的事情可能吗?