Javascript 为什么对象原型方法在oop中不像在过程编程中那样没有调用方

Javascript 为什么对象原型方法在oop中不像在过程编程中那样没有调用方,javascript,oop,function-prototypes,procedural-programming,Javascript,Oop,Function Prototypes,Procedural Programming,如果我有一个过程函数调用另一个过程函数,如下所示: function awesome() { return arguments.callee.caller.name; } function ridiculous() { return awesome(); } ridiculous(); 然后我找到了那个叫“荒谬”的来电者。但是当我用oop风格编写它时,调用方是空的 function myObj() {} myObj.prototype.awesome = function()

如果我有一个过程函数调用另一个过程函数,如下所示:

function awesome() {
    return arguments.callee.caller.name;
}
function ridiculous() {
    return awesome();
}
ridiculous();
然后我找到了那个叫“荒谬”的来电者。但是当我用oop风格编写它时,调用方是空的

function myObj() {}
myObj.prototype.awesome = function() {
    return arguments.callee.caller.name;
}
myObj.prototype.ridiculous = function() {
    return this.awesome();
}

我想知道为什么会发生这种情况,以及如何返回调用者。

对象中的键和函数名不是一回事

请看我的代码片段:

函数myObj(){}
myObj.prototype.awesome=函数awesome(){
返回arguments.callee.caller.name;
}
myObj.prototype.lubic=函数lubic(){
把这个还给我;
}
var o=新的myObj();

console.log(o.logical())
对象中的键和函数名不是一回事

请看我的代码片段:

函数myObj(){}
myObj.prototype.awesome=函数awesome(){
返回arguments.callee.caller.name;
}
myObj.prototype.lubic=函数lubic(){
把这个还给我;
}
var o=新的myObj();

log(o.logical())
这是因为在原型上声明方法时,应该使用命名函数

例如:

function myObj() {}
myObj.prototype.awesome = function awesome() {
    return arguments.callee.caller.name;
}
myObj.prototype.ridiculous = function ridiculous() {
    return this.awesome();
}

myObj.prototype.ridiculous()

这是因为在原型上声明方法时,应该使用命名函数

例如:

function myObj() {}
myObj.prototype.awesome = function awesome() {
    return arguments.callee.caller.name;
}
myObj.prototype.ridiculous = function ridiculous() {
    return this.awesome();
}

myObj.prototype.ridiculous()

我真傻!看完你的答案后,这是非常明显的。非常感谢。我真傻!看完你的答案后,这是非常明显的。非常感谢。