javascript this 用法

4種情境

  1. 當作function調用 => 全域為window, 嚴格模式會報錯

  2. 當作發法調用

  3. 間接調用

  4. 當建構式來調用 通常搭配prototype

var test_f = function() {

// 當作function調用 => 全域為window, 嚴格模式會報錯

console.log(this);

}

test_f();

var test_m = {

// 當作發法調用 => test_m

showThis: function() {

console.log\(this\);

}

}

test_m.showThis();

var test_o = function(a, b, c) {

// 間接調用 {name: 'raymond'}

console.log(this);

}

test_o.call({name: 'raymond'}, 1, 2, 3);

test_o.apply({name: 'raymond'}, [1, 2, 3]);

var Test = function() {

// 當建構式來調用 通常搭配prototype

// devtool => .__proto__. 來叫出有哪些prototype

this.name = 'init';

this.showTest2 = function() {

console.log\(this\);

}

}

Test.prototype.showTest = function() {

// this 等同於 Test

// Test 外面多包覆了 prototype.showTest

console.log(this);

}

var t = new Test();

var t2 = new Test();

console.log(t);

// t.showTest();

console.log(t.showTest === t2.showTest);

// true 表示記憶體相同

console.log(t.showTest2 === t2.showTest2);

// false 表示記憶體不同

results matching ""

    No results matching ""