尝试使用JavaScript中的工厂调用方法时获取未定义

时间:2016-01-14 16:04:32

标签: javascript

尝试在Javscript中使用组合而不是继承与工厂函数,并且我没有使用以下代码定义函数:

(dogIsCreated未定义)

var dog = function dog(state) {
  return {
    create: function create() {
      console.log('Create the dog');
      dogIsCreated();
    },
    dogIsCreated: function dogIsCreated() {
      console.log('Ready');
    }
  }
}

var ted = dog().create();

如果有人能指出我正确的方向,那真是太棒了吗?我使用完全错误的语法。

谢谢:)

2 个答案:

答案 0 :(得分:1)

您需要使用create()关键字定义this方法的范围。

var dog = function dog(state) {
  return {
    create: function create() {
      console.log('Create the dog');
      this.dogIsCreated();
    },
    dogIsCreated: function dogIsCreated() {
      console.log('Ready');
    }
  }
}

答案 1 :(得分:1)

这(dogIsCreated)不是全局函数。 dogIsCreated函数用dog Object创建。这是对象方法,所以你在另一个(相同的)对象方法中调用这个方法,所以我们可以使用'this'来调用该方法 -

var dog = function dog(state) {
  return {
    create: function create() {
      console.log('Create the dog');
      this.dogIsCreated();
    },
    dogIsCreated: function dogIsCreated() {
      console.log('Ready');
    }
  }
}

var ted = dog().create();