我需要通过fc.messages.max.call(this)执行fc.text-function;
但我确实有错误:TypeError:fc未定义。
纯fc.text-function有效。
我需要对范围处理进行一些解释。
以下是Fiddle
这是我的代码
var fc = {
methods: { },
test: function(whatever) {
console.log("test:", whatever);
},
messages: {
tata: "hello",
max: fc.test("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."),
min: fc.test("Geben Sie bitte einen Wert größer oder gleich {0} ein."),
},
otherTest: function() {
console.log("otherTest works");
fc.test("otherTest");
}
};
fc.test("hello world"); //works
fc.otherTest(); //works also
//fc.messages.max.call( this );
我该如何解决这个问题?
我做了另一个jsfiddle工作正常。但功能在不同的范围内。 one more fiddle
有任何解释吗?
答案 0 :(得分:1)
call()
方法是Function
object的属性。
fc.messages.max
不是一个功能。它的值是fc.test()
的返回值,即undefined
。
答案 1 :(得分:1)
call()方法调用函数,并且给定此值和参数单独提供。
min: & max:
不是函数,因此您无法call()
。
var test = function( t ) {
console.log("one more test: ",t);
};
var fc = {
methods: { },
test: function(whatever) {
console.log("test:", whatever);
},
messages: {
tata: "hello",
max: function() { test("var test") },
min: function() { fc.test("fc test") }
},
otherTest: function() {
console.log("otherTest works");
fc.test("otherTest");
}
};
fc.test("fc test, hello world"); //calls fc.test
test("var test, hello world"); // calls var test
// fc.otherTest(); //works also
fc.messages.max.call( this ); // call var test
fc.messages.min.call( this ); // calls fc.test
答案 2 :(得分:0)
我不确定,但我认为您无法访问fc.test()
,因为messages
fc
尚未完成。
比较
var f = { a: function () { return 1; }, max: f.a() }
> TypeError: Cannot call method 'a' of undefined
它说f
未定义。
在分配(f
)完成并定义var f
之前,您无法访问f
。