{}的用法及对象字面量里的this - pod4g/tool GitHub Wiki
{} 如果不是作为赋值语句的话,就表示一个代码块
// 这是一个代码块
{
var a = 2;
alert(a); // 2
alert(this); // window
}
alert(a); // 2;
// 这是一个代码块
"use strict";
{
let b = 2;
alert(b); // 2
alert(this); // window
}
alert(b); // Uncaught ReferenceError: b is not defined
{} 如果作为赋值语句的话,就表示一个对象字面量
// 这是一个对象
var object = {
// var a = 2; alert(2);
age:26
}
如果 {} 作为一个对象字面量的话,内部的语句只能是 key:value, 不能出现其他符号,否则报错 Uncaught SyntaxError: Unexpected token x。这就是使用eval来解析json字符串时,需要加上()的原因,不加的话,会把{}当作代码块,而代码块中不能出现 key:value, 这种代码
如果想要作为一个对象且可以在内部使用所有语句,可以参考 function应用技巧中的 new function(){} 的使用
对象字面量中的this
var age = 999;
var object = {
age:26,
sayAge:this.age
}
alert(object.age) // 26
alert(object.sayAge); // 999
第二种:
/*
会报错,报错的原因在于:当在{}中的非方法中使用 object.age 时,此时object还不存在
*/
var age = 999;
var object = {
age:26,
sayAge:object.age // Uncaught TypeError: Cannot read property 'age' of undefined
}
alert(object.age)
alert(object.sayAge);