尝试在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();
如果有人能指出我正确的方向,那真是太棒了吗?我使用完全错误的语法。
谢谢:)
答案 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();