下面的代码说对象没有方法呵呵
var A = function () {
this.hehe = function () { };
};
var B = function () {};
B.prototype = Object.create(A.prototype, {
constructor: {
value: B,
enumerable: false,
writable: true,
configurable: true
}
});
var _b = new B();
_b.hehe();
答案 0 :(得分:2)
如果您希望B有权访问该功能,您需要在A的原型中定义它。
A.protototype.hehe = function(){
//do something
};
b。
中也缺少对父母构造函数的调用有了这个。他的每一个实例都得到了它自己的hehe函数,因此不在原型中。
同样更好地实现原型不合理如下 - 这是我所知道的意见问题。
function __extends(child,parent){ //Global function for inheriting from objects
function Temp(){this.constructor = child;} //Create a temporary ctor
Temp.prototype = parent.prototype;
child.prototype = new Temp(); //Set the child to an object with the child's ctor with the parents prototype
}
var B = (function(_parent){
__extends(B,A);
function B(){
_parent.call(this);
}
})(A);
答案 1 :(得分:1)
你应该传递一个A的实例作为原型,而不是A的原型。
即。你应该打电话给你的创建电话应该看起来像Object.create(new A(), ...
答案 2 :(得分:0)
hehe()
不是A.prototype
的成员;它是构造函数中指定的每个A
实例的属性。
由于您从未致电A
构造函数,_b
没有。
您需要在派生构造函数中调用基础构造函数:
A.call(this);