Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OOJavaScript规避.调用_Javascript_Jquery - Fatal编程技术网

OOJavaScript规避.调用

OOJavaScript规避.调用,javascript,jquery,Javascript,Jquery,看看小提琴 在show函数中,JavaScript调用方法用于使此引用my contactForm对象中的容器变量。我想,我不太确定是什么魔力让它起作用。有人能解释一下为什么这会起作用,以及什么是好的替代方案吗 JS $(文档).ready(函数(){ var contactForm={ 容器:$(“#联系人”), 配置:{ 效果:“滑动切换”, 速度:400 }, /*******************/ 初始化:函数(配置){ $.extend(this.config,config); $

看看小提琴

在show函数中,JavaScript调用方法用于使
引用my contactForm对象中的
容器
变量。我想,我不太确定是什么魔力让它起作用。有人能解释一下为什么这会起作用,以及什么是好的替代方案吗

JS

$(文档).ready(函数(){
var contactForm={
容器:$(“#联系人”),
配置:{
效果:“滑动切换”,
速度:400
},
/*******************/
初始化:函数(配置){
$.extend(this.config,config);
$('').text('联系我')
.attr('类型','按钮')
.insertAfter(“#第一篇文章”)
.on('click',this.show');
//当前只有关闭按钮上的逻辑
},
/*******************/
显示:函数(){
//使用变量名缩短
var cf=联系方式,
容器=cf.container,
config=cf.config;
if(container.is(':hidden')){
cf.关闭呼叫(容器);
容器[config.effect](配置速度);
}
},
/*******************/
关闭:函数(){
var self=$(这是);
if(self.find('span.close').length){
返回;
}
$('').addClass('关闭')
.text(“关闭”)
.prependTo(本)
.on('单击',函数(){
//self=span
self[contactForm.config.effect](500)
});
}
};
contactForm.init();
});

根本没有魔法;这就是
call
的工作原理
call
允许您调用JavaScript函数并手动指定其中的
this
值,后跟单独列出的所有参数

所以

调用
cf.close
,将
值设置为
容器
。假设这个

cf.close.call(container, 1, 'b');
将执行相同的操作,但也将1和“b”作为参数传递

调用非常非常类似于
apply
,区别在于apply将所有参数作为一个数组,而不是单独列出。所以(假设的)第二个例子与

cf.close.apply(container, [1, 'b']);
当您想调用另一个函数,设置This值,并整体传递当前函数的所有参数时,这会非常有用。即

someFunction.apply(thisValue, arguments);

我不知道您可以将多个参数传递给
call
,谢谢您的提醒。
cf.close.apply(container, [1, 'b']);
someFunction.apply(thisValue, arguments);