javascript访问对象
考虑以下代码:javascript访问对象,javascript,Javascript,考虑以下代码: <script> person={ firstname:"John", lastname:function(){alert(this.firstname)} } person.lastname(); </script> 人={ 名字:“约翰”, lastname:function(){alert(this.firstname)} } person.lastname()
<script>
person={
firstname:"John",
lastname:function(){alert(this.firstname)}
}
person.lastname();
</script>
人={
名字:“约翰”,
lastname:function(){alert(this.firstname)}
}
person.lastname();
就像可以从函数中的任何位置访问局部变量一样,要访问对象的属性,为什么要使用this关键字?既然我们在对象中,就必须使用this关键字?这是因为在JavaScript中,当使用
firstname
时,解释器在当前作用域中查找该变量,随后在所有父作用域中查找该变量。但对象并没有形成作用域
因此,您需要通过一个特殊变量访问firstname
,this
提示:函数正在创建作用域,以此类推示例:
var person = function () {
var firstname = "John";
return {
lastname: function () {
alert(firstname)
}
};
}();
如果没有
这个
就可以工作,这是因为在JavaScript中,当您使用firstname
时,解释器会在当前作用域中查找该变量,然后在所有父作用域中查找该变量。但对象并没有形成作用域
因此,您需要通过一个特殊变量访问firstname
,this
提示:函数正在创建作用域,以此类推示例:
var person = function () {
var firstname = "John";
return {
lastname: function () {
alert(firstname)
}
};
}();
如果没有
这个
,这个
关键字在JavaScript中与其他语言相比有点不同。当前作用域中绑定到此的对象由当前函数的调用方式决定,在执行过程中不能通过赋值进行设置,每次调用函数时它都可能不同
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"
此
在原型链上或在DOM事件处理程序中的行为也不同
JavaScript中的此
关键字与其他语言相比在某种程度上有所不同。当前作用域中绑定到此
的对象由当前函数的调用方式决定,在执行过程中不能通过赋值进行设置,每次调用函数时它都可能不同
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"
此
在原型链
或DOM事件处理程序中的行为也不同
是,除非您想使用person.firstname是,除非您想使用person.firstname