Javascript 如何获取函数内部函数的引用
假设我有一个这样的函数Javascript 如何获取函数内部函数的引用,javascript,Javascript,假设我有一个这样的函数 function a() { //get a reference console.log( /*something that will get me reference to function a*/); } 为什么? 我在想我能做到这一点 function Car() { //{reference2myself}.prototype = Vechile.prototype; Car.prototype = Vechile.prototype; } 注
function a() {
//get a reference
console.log( /*something that will get me reference to function a*/);
}
为什么?
我在想我能做到这一点
function Car() {
//{reference2myself}.prototype = Vechile.prototype;
Car.prototype = Vechile.prototype;
}
注意,我必须手动设置汽车参考,我不想这样做
另外,顺便说一句,为什么原型不设置在主工厂功能中,我理解这意味着对于使用该功能创建的每个实例,所有原型道具都将被重新分配给同一个对象
我真正想做的是:
Object.prototype.extend = function(clas) {
clas.call(this);
this.prototype = this.prototype || {};
Object.setPrototypeOf(this.prototype, clas.prototype);
this.prototype.constructor = arguments.caller;
}
//then i could use it like this
function Vechile(){
this.loc=0;
}
Vechile.prototype.move = function(){
this.loc++;
};
function Van(){
this.extend(Vechile);
}
Van.prototype.pickUp = function(){};
var a = new Van();
// now a should have pickup method
// move method
// and Van prototype should be and object which should have its __proto__ set to Car.prototype
更新
我想我终于找到了让我可以轻松模拟类继承的代码。如果我遗漏了什么,请告诉我
Object.prototype.extends = function(clas) {
clas.call(this);
var proto = Object.getPrototypeOf(this);
Object.setPrototypeOf(proto, clas.prototype);
}
//then i could use it like this
//super class
function Vechile(){
this.loc=0;
}
Vechile.prototype.move = function(){
this.loc++;
};
//sub class
function Van(){
this.extends(Vechile);
}
Van.prototype.pickUp = function(){};
var a = new Van();
简短的回答:不要
Car函数是一个构造函数。因此,它将继承原型属性。您不希望将Car.prototype=which
放在构造函数内部,而是放在构造函数外部
编辑:
如果您打算将Car作为车辆的子类:
function Car() {
Vehicle.call(this);
// this.parent = Vehicle or whatever you want to do
}
Car.prototype = Object.create(Vehicle.prototype);
Car.prototype.constructor = Vehicle;
Car.prototype=…
;在函数中使用函数名来引用它们,或者使用参数。被调用方
,但这会受到反对,所以请使用名称。如果要引用构造函数生成的对象(如命名约定所示),使用此
点击实例本身,并定义实例之间不共享的属性。您的问题写得没有意义,因此如果您解释您实际试图解决的问题,它可能会澄清问题。请立即检查。使用name将不适用于sorta helper的扩展函数functioni试图为javascript创建一个扩展/超级函数,它将完成两件事。当在构造函数内部调用时,它将在此基础上运行父构造函数,然后设置从父构造函数的prototype@MuhammedUmer如果您试图呼叫家长,则必须直接呼叫。不幸的是,在ES5中,没有更好的方法可以做到这一点。请参见编辑。@MuhammadUmer我知道您正在尝试做什么,使用排序为子类的helper函数,但正如我之前所说的:不幸的是,在当前版本的JS中,这种方法会产生副作用,被认为是“错误”的继承方式。看一看一些arbitary,它也使用了这个答案中的方法。你能检查一下新的扩展方法吗。我想不出除了它的全球功能之外还有什么副作用,它是ie11+唯一的东西
function Car() {
Vehicle.call(this);
// this.parent = Vehicle or whatever you want to do
}
Car.prototype = Object.create(Vehicle.prototype);
Car.prototype.constructor = Vehicle;