所以这是一些代码
var name = 'ali';
function say() {
alert(name);
}
所以这会警告'ali',因为名称函数现在由全局对象拥有以下代码
var oobj {
var name: 'raziq',
say:function () {
alert (name);
}
}
oobj.say();
所以现在say函数归oobj对象所有,所以name属性应警告'raziq' 而不是'阿里'。顺便说一句,我知道使用这个关键字
我的问题是什么会被提醒和y?
答案 0 :(得分:8)
--- ---更新
基本上,一个是变量,一个是属性。您可以通过两种不同的方式访问它们
在您的问题中,您声明了一个变量name
和一个函数。在任何时候,如果您没有专门重新定义name
,那么它将始终是该值。
在您的情况下,您认为在执行
时正在重新定义name
var oobj = {
name: 'raziq'
但你不是。您正在声明oobj对象的属性。即如果我尝试从对象外部提醒名称,它将查找名称的变量声明,它将找到您设置为“ali”的全局变量。要获得property
名称,您必须告诉它找到它的“路径”。路径为oobj.name
你在一个物体内,所以你不要使用var =
和;
。您使用逗号,
,而只需say: function() {
var oobj = {
name: 'raziq',
say: function () {
alert(this.name);
}
}
oobj.say();
答案 1 :(得分:1)
由于杰夫已经发布了正确答案,我只是想指出,即使是第一个例子也没有按预期工作。内部alert
将显示name
函数。
所以这个:
function name() {
alert(name);
}
name()
将提醒消息:
function name() {
alert(name);
}
答案 2 :(得分:0)
也许你正在寻找这个
var oobj = {
name : 'raziq',
say : function (){
alert (oobj.name);
}
}
oobj.say();