Измените А на
var A = function () {
this.workingTest = function () {return "OK";};
};
Проблема в том, что ваша оригинальная функция A
создавала и возвращала прямой экземпляр Object
вместо использования экземпляра A
, который был создан оператором new
и привязан к this
.
Чтобы понять это, попробуйте запустить
var B = function () { return { x: 42 }; }
var C = function () { this.x = 42; }
var b = new B;
var c = new C;
alert("b.constructor === B : " + (b.constructor === B)); // false
alert("b.constructor === Object : " + (b.constructor === Object)); // true
alert("c.constructor === C : " + (c.constructor === C)); // true
Так как B
возвращает новый объект, возвращаемое им значение больше не является instanceof B
и не использует прототип B
.