当像这样声明一个对象时:
var name= {
firsName:"nur",
lastName:"jaman",
fullName: function() {
return this.firsName + " " + this.lastName;
}
}
console.log(name.fullName());
Run Code Online (Sandbox Code Playgroud)
它抛出这个错误:
Uncaught TypeError: name.fullName is not a function
Run Code Online (Sandbox Code Playgroud)
但是,使用任何其他变量名称(例如var hello = ...)都可以。为什么?
发生这种情况是因为name是 的现有属性window,其行为与普通变量略有不同。
您无法替换此属性,只能为其分配字符串值。当将其他类型分配给 name 属性时,它会被强制转换为字符串:
name = false;
var name = false;
window.name = false;
Run Code Online (Sandbox Code Playgroud)
这些行都将导致具有包含 的window属性。name"false"
以类似的方式,保存到name变量的对象和函数将被转换为字符串:
var name = function(){}; // "function (){}"
var name = { a: [1, 2] }; // "[object Object]"
Run Code Online (Sandbox Code Playgroud)
如果您想使用名为“name”的变量,则必须将其括在一个范围内:
name = false;
var name = false;
window.name = false;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2543 次 |
| 最近记录: |