es5_Object
creat(指定propto,):
let obj = {
x:1,
y:2
};
//es5
let obj2 = Object.create(obj,{
z:{
value:3
}
});
//es6
let obj3={
__proto__:obj,
z:3
}
console.log(obj2);//打印Object {z: 3};
console.log(obj3);//打印Object {z: 3};
console.log(obj2.x);//打印1;
Object.defineProperty() 用来给对象定义属性的:
let obj = {
x:1,
y:2
}
obj.k=3;
Object.defineProperty(obj,"j",{
value:4,
writable:true, //可写
enumerable:true, //可遍历
configurable:true //可配置
});
Object.defineProperties() 给对象指定对个属性:
Object.defineProperties(obj,{
"m":{
value:"m1"
},
"l":{
value:"l1"
}
})
obj.j=50;
obj.k=50;
console.log(obj);//打印Object {x: 1, y: 2, k: 50, j: 50, m: "m1",l:"l1"};
for(var key in obj){
console.log(key);//打印x y k j;
};
获取,设置:
getOwnPropertyDescriptor()用来获取属性的描述:
console.log(Object.getOwnPropertyDescriptor(obj,"x"));//打印Object {value: 1, writable: true, enumerable: true, configurable: true};
Object.keys()用来返回对象的key值:
console.log(Object.keys(obj));//打印["x", "y", "k", "j"];
Object.getOwnPropertyNames()获取所有属性名:
console.log(Object.getOwnPropertyNames(obj));//打印["x", "y", "k", "j", "m", "l"];
Object.preventExtensions():
Object.preventExtensions(obj);
//让一个对象不可扩展,该对象无法再添加新的属性,但是可以删除现有属性;
Object.seal() :
Object.seal(obj);
//对一个对象密封,该方法会阻止对象扩展,并将该对象的所有属性设置为不可配置;
Object.freeze() :
Object.freeze(obj);
//对一个对象进行冻结,实现常量的需求,该方法会阻止对象扩展,并冻结对象,将其所有属性设置为只读和不可配置;
Object.isExtensible():
Object.isExtensible(obj);
//判断对象是否扩展;
Object.isSealed():
Object.isSealed(obj);
//判断对象是否密封;
Object.isFrozen():
Object.isFrozen(obj);
//判断对象是否冻结;
//writable:false不可改,true可改;
//enumerable:false不可遍历,true可遍历;
//configurable:false不可配置,true可配置;
‘use strict‘:
严格模式 1.弃用了很多以前版本的语法,如果在用的话就提示错误;
严格模式 2.让你使用一些最新版本的语法;有些浏览器不支持新版本的语法,加上严格模式就支持了;
下面就是严格模式总结::
1.使用var声明变量严格模式中将不通过
2.何使用‘eval‘的操作都会被禁止
3.val作用域
4.ith被禁用
5.aller/callee 被禁用
6.禁止扩展的对象添加新属性会报错
7.除系统内置的属性会报错
8.delete使用var声明的变量或挂在window上的变量报错
9.delete不可删除属性(isSealed或isFrozen)的对象时报错
10.对一个对象的只读属性进行赋值将报错
11.对象有重名的属性将报错
12.函数有重名的参数将报错
13.八进制表示法被禁用
14.arguments严格定义为参数,不再与形参绑定
15.函数必须声明在顶层
16.ES5里新增的关键字不能当做变量标示符使用,如implements, interface, let, package, private, protected, pulic, static, yield
17.call/apply的第一个参数直接传入不包装为对象
18.call/apply的第一个参数为null/undefined时,this为null/undefined
19.bind的第一个参数为null/undefined时,this为null/undefined