gpt4 book ai didi

JavaScript - 等同于 PHP 类 self::

转载 作者:行者123 更新时间:2023-11-29 18:09:55 25 4
gpt4 key购买 nike

所以我一直在搜索这个,因为它让我很头疼,无法实现这个……而且似乎没有我预期的解决方案。

假设我们有一个示例 PHP 类:

<?php 

class SampleClass {

function doA() {
echo 'Hello world';
}

function doB() {

$sampleArray = ['Hey', 'You'];

foreach( $sampleArray as $key => $value ) {

self::doA();

}

}

}

?>

由于 foreach 循环,此代码将回显 Hello World 两次。那很好。

现在我有了这个脚本:

function SectionHandler($appWrap) {

this.appWrap = $appWrap;

this.loading = function() {
this.appWrap.addClass('section-loading').html("<i class='fa fa-refresh fa-2x fa-spin'></i>");
}

this.setError = function($info) {
this.appWrap.addClass('section-error').html($info);
}

this.load = function($section) {

var $fileCheck = $.get($section).success(function(){
self.loading();
self.load($section);
}).fail(function(){
self.setError('No se pudo cargar los datos especificados desde ' + $section + ' ;');
});

}

}

我相信 this.loading() 不再指向 main 函数,因为 $.get().success() 函数。我不知道真正的原因。

问题是 this.loading()、this.load()、this.setError() 都不起作用。

那么,我该怎么做才能像使用 PHP self:: 函数一样指向主函数。?

-- 编辑--

正如@Eclecticist 指出的那样,this.load($section); 行将一直执行到失败或出现错误为止,我将整个检查更改为:

var $fileCheck = $.get($section).done(function(response){
self.appWrap.html(response);
}).fail(function(){
self.setError('No se pudo cargar los datos especificados desde ' + $section);
});

最佳答案

试试这个:

function SectionHandler($appWrap) {
var that = this;

this.appWrap = $appWrap;
this.loading = function() {
that.appWrap.addClass('section-loading').html("<i class='fa fa-refresh fa-2x fa-spin'></i>");
}

this.setError = function($info) {
that.appWrap.addClass('section-error').html($info);
}

this.load = function($section) {
var $fileCheck = $.get($section).success(function(){
that.loading();
that.load($section);
}).fail(function(){
that.setError('No se pudo cargar los datos especificados desde /[ ' + $section + ' ]\ ;');
});
}
}

问题是一旦您进入函数内部,this 的值就会发生变化。您可以通过在主函数 that 中声明一个变量来解决这个问题,稍后再引用它。

--编辑--

我要注意 that.load($section); 行将递归调用 SectionHandler.load() 直到 AJAX 请求失败,或者直到您得到一个 stackoverflow 错误。

是的,我一直希望能出现一些可以引用该错误的东西:)

关于JavaScript - 等同于 PHP 类 self::,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28390741/

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