原始表达式
常量、直接量: 3.14,"test"
关键字 : null,this,true
变量 :i,k,j
复合表达式
原始表达式 (运算符) 原始表达式 ====》 复合表达式
数组对象的初始化表达式
[1,2] new Array(1,2)
[1,,,4] [1,undefined,undefined,4]
var o = new Object();
{x:1,y:2} o.x = 1;
o.y = 2;
函数表达式
var fe = function(){};
(function(){console.log('hello world');})();
属性访问表达式
var o = {x:1};
o.x
o['x']
调用表达式
function();
对象创建表达式
new Func(1,2);
new Object;
运算符
一元运算符: +num
二元运算符: a+b
三元运算符: c?a : b
按功能:
赋值(+=)、比较(==)、算数(+/-)、位( | )、逻辑(&&)、字符串(+)、特殊(delete)
,表达式 (逗号表达式)
a,b;
var val = (1,2,3); //val = 3;
从左到右依次计算值,然后取最右侧的值
逗号运算符在JavaScript在的优先级是最底的
delete obj.x;
var obj = {x:1,y:2}
obj.x; //1
obj.y; //2
delete obj.x;
obj.x; //undefined
obj.y; //2
Object.defineProperty(obj,'z',{
configurable:false,
value:3
});
此时z就不能被删除了
in运算符
window.x = 1;
'x' in window; //true
instanceof
{} instanceof Object //true
typeof 100 == 'number' //true
new 运算符
function Foo(){}
Foo.prototype.x = 1;
var obj = new Foo();
obj.x; //1
obj.hasOwnProperty('x'); //false 无法检查对象的原型链中是否有属性,必须是对象本身的一个成员
obj.__proto__.hasOwnProperty('x'); //true
this运算符
this; //window(浏览器)
var obj = {
func:function(){return this;}
};
obj.fun(); //obj
void运算符
void 0; //undefined
void(0); //undefined