js中this指向问题?
城堡下的诡洞
城堡下的诡洞 2017-03-22 09:24:15
0
2
996

这两个代码的this指向让我懵逼了

    var length = 10;
    function fn() {
        console.log(this.length);
    }
    var obj = {
        a: fn,
        length: 5,
        method: function (f) {
            //console.log(this===obj);//true
            f();
            //console.log(arguments)
            //arguments[0]();//
            //arguments[0].call(this);//
            //arguments[0].call(obj);//
        }
    };
    obj.method(obj.a);
var name = 'out';
var obj = {
    name: 'in',
    prop: {
        name: 'inside',
        getName: function () {
            return this.name;
        }
    }
};

//console.log(obj.prop.getName());//
var test = obj.prop.getName;//
console.log(test());//


城堡下的诡洞
城堡下的诡洞

全員に返信(2)
数据分析师

このポインティングの問題は js にありますか? - PHP 中国語 Web サイト Q&A - これは js の問題を示していますか? -PHP中国語サイトQ&A

ぜひ見て学んでください。

いいねを押す +0
迷茫

1.this指向不看定义的时候在哪,而是看调用的时候指向。obj.method(obj.a)。那么调用的就是obj,而obj在全局作用域里面,所以this指向window或undefined(严格模式)。

2.调用的是test。test在全局作用域,所以name也是全局下的name。如果一定要修改这个指向,可以在这行:

var test = obj.prop.getName.bind(obj);    
//或者
var test = obj.prop.getName.bind(obj.prop);

再调用的时候就是in或者inside了

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!