操作符(Operator)
void
如果void后是数字,就返回NAN,否则返回Undefined。
alert(void (1 + 1)); //跟的左括号 print undefined
alert(void 1 + 1); //跟的数字 print NAN
obj instanceof contructor
var obj = new factory();
alert(obj instanceof factory); //print true obj引用factory创建
var aa = { name:"sam" };
alert(aa instanceof Object); //引用Object构造函数创建自身
property in obj
alert('name' in obj); //name属性在obj的原型链中
delete obj.property
删除对象的属性或数组的元素
var obj = { name:"sam" };
delete obj.name;
alert('name' in obj); //print false var bb = ["a", "b", "c"];
delete bb[0];
alert(bb[0]); //print undefined,被删元素会以undefined占位 alert("1" in bb);//还是true,原因不明
alert("42" in bb); //false
new x
x是构造函数,只用于调用构造函数创建对象,匿名对象不能使用new操作符。
!x
取非,
1.如果x是布尔值,则取x相反的布尔值
2.如果x是一个测试"是否"的函数,如果该函数的逻辑是:是否不是,则取非后描述为:是否是。如果函数的逻辑是:是否是,则描述为是否不是。
alert(!aa);//取false的反数,print true
a=x?y:z
三元运算符,执行条件测试,简化if……else语句,如果x表达式为真,y赋给a,否则z赋给a。a是变量,x是表达式。
alert(aa); //print NAN
1 + 1 == 12 ? alert("12") : alert("NAN"); //与C#不同之处在于,js中三元运算操作符可以不用把结果输出给变量
var x = 10;
var y = x == 1 ? x + 1 : x == 2 ? x + 2 : x + 0;
//等同于
if (x == 1) y = x + 1;
else if (x == 2) y = x + 2;
else y = x + 0;
typeof x
返回x的类型。可能返回的值:number、string、boolean、object、function、undefined(此时,NAN也会被当做undefined)
function factory() { }
typeof b == "boolean" ? alert("true") : '';
typeof factory == "function" ? alert("true") : '';
.
获取属性
alert(Obj.x);
alert(Obj.y);
y['x']或y[index]
获取对象的属性或数组的元素
alert(Obj["x"]);
alert(Obj["y"]);
var Obj = { 'x': 10, 'y': 20, }
for (var item in Obj) {
alert(item);//print 这样只能得到每个属性名的字符表示
alert(Obj[item]);//print 这样可以得到每个属性的值
}