Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
311 views
in Technique[技术] by (71.8m points)

关于js函数自身的作用域的问题?

function a(){
    console.log(this);
}

    a();

常规定义一个函数a,它的作用域在a函数定义的时候已经确定,输出的this指向全局,这里没有异议。


$(元素).click(function(){
    console.log(this);
    a();
})

为这个元素绑定一个点击事件,回调函数里先输出this,指向$(元素),然后再调用a(),this指向的全局,没有异议。


假如:
1、我有函数b() ,c() ,d() , 与函数a()一样,都是全局定义,this也是指向全局。
2、我在为$(元素)添加点击事件,然后依次执行a,b,c,d函数。


问题:
1、如何在声明函数前决定它的作用域,例如我声明个变量,var ttt,在函数里声明,就是局部的。
2、在我调用a,b,c,d函数时,如何让这4个函数的this指向$(元素)?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

第一个我不懂你是什么意思,所以就回答第二个问题。
我理解的应该是这样:
先定义了这四个四个函数abcd,

function a(){
    console.log(this);
}
function b(){
    console.log(this);
}
function c(){
    console.log(this);
}
function d(){
    console.log(this);
}

然后

$(元素).click(function(){
    console.log(this);
    a.call(this);
    b.call(this);
    c.call(this);
    d.call(this);
});

就这样。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...