考慮下面的代碼:的JavaScript訪問對象
<script>
person={
firstname:"John",
lastname:function(){alert(this.firstname)}
}
person.lastname();
</script>
局部變量一樣,可以從任何地方在函數內被訪問,訪問對象的屬性,我們爲什麼要使用這個關鍵字,因爲我們是內?該對象是否使用這個關鍵字強制?
考慮下面的代碼:的JavaScript訪問對象
<script>
person={
firstname:"John",
lastname:function(){alert(this.firstname)}
}
person.lastname();
</script>
局部變量一樣,可以從任何地方在函數內被訪問,訪問對象的屬性,我們爲什麼要使用這個關鍵字,因爲我們是內?該對象是否使用這個關鍵字強制?
這是因爲在JavaScript中,當您使用firstname
,解釋正在尋找在當前範圍是可變的,後來,在所有父作用域。但對象不構成範圍。
因此,您需要通過特殊變量 - this
訪問firstname
。
提示:功能是創建範圍,等等例如:
var person = function() {
var firstname = "John";
return {
lastname: function() {
alert(firstname)
}
};
}();
沒有this
會工作。相對於其他語言在JavaScript
this
關鍵字是有些不同。在當前作用域中綁定到this
的對象由當前函數的調用方式決定,它不能在執行過程中通過賦值來設置,並且每次調用該函數時都可能會有所不同!
var person1 = {
firstname: "John",
lastname: function() { alert(this.firstname) }
}
var person2 = {
firstname: "James",
}
person2.lastname = person1.lastname.bind(person2);
var firstname = "Rick";
簡單的呼叫:
person1.lastname(); // "John"
語境變化呼叫:
person1.lastname.call(window); // "Rick"
約束函數調用:
person2.lastname(); // "James"
this
也表現不同的prototype chain
或DOM event handlers
是,除非你想用person.firstname – mplungjan 2013-04-04 06:29:32