我将marketing.reg("bum","a","b","c");
字符串传递给函数。
在第一个范围内,它仍然是一个字符串。
传递到下一个范围后,它变成了一个对象。如何避免呢?
function mktg() {};
mktg.prototype.reg = function(nameOfEvent,a,b,c) {
//typeof a,b,c is string
var fktn= function(a,b,c) {
console.log(typeof a); //is object not string
console.log( "fktn a: ",a);
};
$(document).on(nameOfEvent, fktn);
};
var marketing = new mktg;
marketing.reg("bum","a","b","c");
答案 0 :(得分:10)
变量a,b和c被事件调用的参数取代" bum"。
您应该从函数fktn中删除参数a,b和c。
答案 1 :(得分:1)
这是因为你在某个事件上调用函数fktn
。
所以在你的功能中
var fktn= function(a,b,c) {}
变量a,b,c
不再是函数reg
中的变量,它们是函数fktn
的参数。
在每个事件中,第一个被调用的参数将是event
本身,这是一个对象,这就是为什么你得到typeof
一个对象的原因。
答案 2 :(得分:1)
代替函数(a,b,c)
尝试类似函数(“'” + a +“','” + b +“','” + c +“'”)
这会将a,b和c的值放在参数列表中的引号中,因此意味着它们将为字符串类型。
很抱歉的道歉。它以双引号内的单引号开头,然后连接a的值,然后在双引号内以','串联等。.