Javascript中的name的非一般含义?换个名,为什么输出就不一样了
Javascript中的name的特殊含义?换个名,为什么输出就不一样了?
变量名为name时的输出是

将变量名name改为o,输出如下:

这是为什么?name在Javascript有什么特别含义?
------解决方案--------------------
因为你第一句是function Person(){},已经结束了,
所以下面的代码可能在全局context中,也就是说你以为
alert(JSON.stringify(name));
是输出的上面的var name
但实际上可能输出的是window.name,
再查查代码把,看看同一环境里面有没有定义name,或者隐含的name
------解决方案--------------------
好问题啊
经过 简单的 检查测试
window.name 是窗口的名称 是于一个 属性成员
注意属性成员 一般是重新 定义 = 操作符号的
也就是 可能是这样定义
window.name {
_name = '';
set:function(val){
_name = val.toString();
}
get:function(){
return _name;
}
}
function Person(){}
var per = new Person;
Object.defineProperties(per,
{
"nickName":
{
value:"Tom",
writable:true
},
"age":
{
value:20,
configurable:false,
writable:false
}
});
var name = Object.getOwnPropertyDescriptor(per,"nickName");
alert(JSON.stringify(name));
变量名为name时的输出是
将变量名name改为o,输出如下:
这是为什么?name在Javascript有什么特别含义?
------解决方案--------------------
因为你第一句是function Person(){},已经结束了,
所以下面的代码可能在全局context中,也就是说你以为
alert(JSON.stringify(name));
是输出的上面的var name
但实际上可能输出的是window.name,
再查查代码把,看看同一环境里面有没有定义name,或者隐含的name
------解决方案--------------------
好问题啊
经过 简单的 检查测试
window.name 是窗口的名称 是于一个 属性成员
注意属性成员 一般是重新 定义 = 操作符号的
也就是 可能是这样定义
window.name {
_name = '';
set:function(val){
_name = val.toString();
}
get:function(){
return _name;
}
}