语句:条件,循环,跳转,
表达式语句,复合语句和空语句,声明语句,var,function,条件语句,switch,循环,标签语句,break语句,continue语句,return语句,throw语句,try/catch/finally语句,with语句,debugger语句,use strict
对象,原型式继承是javascript的核心特征。
对象常见用法:创建,设置,查找,删除,检测和枚举它的属性。
对象直接量:由若干名值对组成的映射表。
通过“.”运算符访问对象属性时属性名用标示符来表示;通过[]来访问对象的属性时属性名通过字符串来表示。
内置构造函数的原型是只读的。
delete只是断开属性和宿主对象的联系,不会去操作属性中的属性。
判断某个属性是否存在于某个对象中,用in运算符,hasOwnPreperty(),propertyIsEnumerable()方法,或仅通过属性查询。
in运算符的左侧是属性名(字符串),右侧是对象。如果对象的自有属性或继承属性中包含这个属性则返回true。
对象的hasOwnProperty()方法用来检测给定的名字是否是对象的自有属性,对于继承属性它将返回false。
propertyIsEnumerable()是hasOwnPreperty()的增强版,只有检测到是自有属性且这个属性的可枚举性为true时她才返回true。
“!==”判断一个属性是否是undefined。
in区分不存在的属性和存在但属性值为undefined的属性。
把属性名称赋值给循环变量。对象继承的内置方法不可枚举,给对象添加的属性是可枚举的,除非转化成不可枚举的。
inherit(); function inherit(p){ alert(1); try { if(p==null) throw new TypeError(); }catch (e){ console.log(e.name) p={} } alert(2); if(Object.create) return Object.create(p); alert(3); var t=typeof p; if(t!=="object" && t!=="function") throw new TypeError(); alert(4); function f(){}; alert(5); f.prototype=p; alert(6); return new f(); alert(7); }