var obj = {a:1,b:2};
var obj = new Object(); obj.a = 1; obj.b = 2;
3 Object.create(targetObj):根据已有对象创建
var span = document.createElement("span"); span.k = "extends!"; var obj1 = Object.create(span); // console.dir(obj1.__proto__.k);//extends! console.dir(obj1.__proto__);//span console.log(obj1.prototype);//undefined console.log(obj1 === span);//false,返回的是新对象
Object.assign(targetObj,sourceObj1,sourceObj2......);
该方法用于将一个或多个源对象的属性拷贝(浅复制)到目标对象,返回目标对象。
var t = {x:1} var obj = {a:1,b:null,c:undefined,d:t} var obj2 = Object.assign({},obj); console.log(obj2);//可以复制null obj2.d.x = 1000; console.log(t.x);//1000,浅复制,存在引用
assign:复目标对象属性给自身,包括原型
create:将目标对象作为自己的原型
var span = {}; span.t = "get prop!"; span.__proto__.x = "get prop!"; var obj = Object.create(span); var obj1 = Object.assign({},span); console.log("create:",obj); console.log("assign:",obj1);
var obj = {_b:1}; Object.defineProperty(obj,"a",{ configurable:false,//是否可删除属性并且重定义描述对象 enumerable:false,//是否可枚举,比如for循环和Object.keys writable:false,//是否可更改(改的话不会报错但是改不了) value:10 }); // obj.a = 1000; // console.log(obj.a);//10,不可更改 // console.log(Object.keys(obj));//没有a,不可枚举 for ( var key in obj) { console.dir(key);//没有a,不可枚举 } delete obj.a; console.log(obj.a);//不可删除
判断,等同于===,但是有几个例外情况
console.log(NaN === NaN);//false console.log(Object.is(NaN,NaN));//true
原文:https://www.cnblogs.com/ltfxy/p/12343917.html