我有问题。 我的代码:
function Param(){
this.name = 'sasha'
this.method = function(){
return this.name + 'native method'
}
this.pro= function(){
debugger
// Param.prototype.method() //undefined proto method bad!!
// this.__proto__.method() //undefinedproto method
Object.getPrototypeOf(this).method() //undefinedproto method
}
}
Param.prototype.method = function(){
console.log(this.name + 'proto method')
}
var param= new Param;
param.pro()
使用this.name =' sasha'帮助获取方法原型。 ...
他的工作方式如Object.getPrototypeOf(this).method.call(this);
也许有另一种选择?
答案 0 :(得分:2)
非常简单的解决方案:this.method()
。这只是多态性。
如果你想确保使用原型中的方法,你必须明确地(通过你已经显示的3种方式中的任何一种方式),但是你还需要明确地调用它。使用.call(this)
的当前实例。这没什么不对。
如果您想要定义一个与pro
完全相同的.prototype.method
方法,您可以直接指定它:
this.pro = Param.prototyp.method();
然后param.pro()
将在具有名称的实例上调用该原型方法。