سؤال

Is it possible to do the following:

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

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

so that when I for example call B.myname() I will have the name 'B' available in the function body?

Trying this.constructor.name as expected just returns 'A' every time.

هل كانت مفيدة؟

المحلول

I suppose you're looking for this?

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/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top