1.对象的三个属性
//原型属性
Object.getPrototypeOf(a);//获取a的原型
a.constructor.prootype;//获取a的原型(推荐)
o.isPrototypeOf(a);//判读o是否是a的原型
//类属性
function classOf(o){
if(o===null)return "null";
if(o===undefined)return "undefined";
return Object.prototype.toString.call(o).slice(8,-1);
}
<pre name="code" class="javascript">classOf(o)//输出Object
//可拓展性
Object.preventExtensions(o)//将对象转为不可拓展,一旦转为不可拓展,再也无法转回可拓展。
Object.seal(o)//同上,同时不可配置
Object.freeze(o)//更严格
2.数组
var a = [];
a.push("a","b","c");//添加多个元素
delete a[1];
1 in a //返回false
a.length//返回3,删除元素,只会让数组变为系数数组
a.pop(a[1])
a.length//返回2
//循环优化
for(var i=0,len=a.length;i<len;i++){
if(!a[i]) continue;//跳过null与undefined
if(!(i in a)) continue;//跳过不存在的元素
}
3.Function构造函数
var x=1,y=2;
var f = new Function("x","y","alert(x+y)");
(function (){
f(x,y);
}());//输出3
var scope = "global"
function aaa(){
var scope = "local";
return new Function("return scope");
}
(function (){
alert(aaa()());
}());//输出global,Function访问全局作用域