javascript this 用法
4種情境
當作function調用 => 全域為window, 嚴格模式會報錯
當作發法調用
間接調用
當建構式來調用 通常搭配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 表示記憶體不同