【问题标题】:Calling a method within a Javascript Object在 Javascript 对象中调用方法
【发布时间】:2026-02-10 22:00:02
【问题描述】:

我正在尝试创建一个可以在其内部调用其他方法的 javascript 对象。但是,我遇到了一个我似乎无法弄清楚的奇怪问题。

我有以下代码

myObjectDef = function() {
    this.init = function() {
        //do some stuff
        this.doSecondInit();
    }
    this.doSecondInit = function() {
        //do some more stuff
    }
}

myObject = new myObjectDef();
myObject.init();

我收到一条错误消息,指出“消息:对象不支持此属性或方法”。它在 this.doSecondInit(); 处结束。我不太明白它为什么会这样。我的代码在调用第二种方法之前运行良好。我该如何完成这项工作?

【问题讨论】:

  • 您的代码看起来不错,对我来说也可以正常工作:jsfiddle.net/vdVE8 - 也许您需要显示缺失的位。

标签: javascript oop


【解决方案1】:

这里有一组额外的括号:

this.doSecondInit() = function() {

你不能给函数调用的结果赋值,更不用说给一个根本不存在的函数的结果了。

编辑后,你的东西似乎工作正常:

http://jsfiddle.net/nabVN/

您确定您的实际代码中没有相同的错字吗?最好开始习惯不要在每次函数调用后加上 (),这可能是从函数不是值的语言遗留下来的一个坏习惯。

【讨论】:

  • 看来我需要更仔细地查看我的代码。它绝对不适合我,我绝对没有第一组括号。我敢肯定,此时我还忽略了其他一些事情。