gpt4 book ai didi

javascript - 这与 Javascript 中的类名

转载 作者:行者123 更新时间:2023-11-30 12:18:31 24 4
gpt4 key购买 nike

我正在使用其他人的代码片段,我似乎无法理解他何时使用 this 以及他何时使用类的名称

在第 3 行,他使用了 this.pusher,而在 $.each 函数中,他使用了 chat.pusher(当前对象的名称)

connect : function ( )
{
if ( typeof Pusher !== 'undefined' )
{

this.pusher = new Pusher( config.pusher_app_key , { encrypted : true, authEndpoint : '/chat.php' , auth : { params : { hash : app.session.get(), mobile : app.mobile } } } );

$.each( chat.channels , function ( channel_type , channel_name ) {

chat.pusher.subscribe( channel_name );

if ( chat.events[ channel_type ] )
$.each( chat.events[ channel_type ] , function ( event_name , callback ) {
chat.pusher.channels.channels[ channel_name ].bind( event_name , chat.events[ channel_type ][ event_name ] );
});

});
},

我还添加了一个屏幕截图,清楚地显示了情况。

enter image description here

最佳答案

这是因为在 $.each 中,this 引用了当前迭代的元素(在这种情况下,this 不会 引用了当前的 chat 对象。)

他在那种情况下使用了 chat 而不是几个选项(例如使用 Function.prototype.bind,或者常见的 var _this = this.

例子:

$.each(['a', 'b'], function(el) {
console.log(this); // iteration 1: 'a', iteration 2: 'b'
});

另一个例子:

var canInTheHat = {
someMethod: function() {
console.log(this); // => catInTheHat

$.each(['a', 'b'], function() {
console.log(this); // => iteration 1: 'a', iteration 2: 'b'
});
},
someOtherMethod: function() {
console.log(this); // => catInTheHat

$.each(['a', 'b'], function() {
console.log(this); // => iteration 1: catInTheHat, iteration 2: catInTheHat
}.bind(this)); // notice the bind
}
}

关于javascript - 这与 Javascript 中的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31717881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com