1

次のことは可能ですか?

function A() {}
function B() {}
B.prototype = A;
function C() {}
C.prototype = A;

A.prototype.myname = function() { /* get 'B' or 'C' here */ }

たとえば、 B.myname() を呼び出すと、関数本体で「B」という名前が使用できるようになりますか?

期待どおりに試行するとthis.constructor.name、毎回「A」が返されます。

4

1 に答える 1

1

私はあなたがこれを探していると思いますか?

function A() {}
A.prototype.myname = function() {
    return this.constructor.name;   
};
function B() {}
B.prototype = new A();
B.prototype.constructor = B;
var b = new B();
console.log(b.myname()); // logs B

http://jsfiddle.net/BFxnb/

于 2013-10-04T20:28:09.397 に答える