1、Object.assign() – ES6
通过复制一个或多个对象来创建一个新的对象
const target = { a: 1, b: 2,d:3 };
const source = { b: 4, c: 5 };
let a = Object.assign(target,source)
console.log(a,"二分分")
console.log(source,"要")
2、Object.create()
使用指定的原型对象和属性创建一个新对象。
let person = {
isHuan:false,
yai:()=>{
console.log("fefes")
}
}
const me = Object.create(person)
//把person加入到了me原型上了
console.log(me)
3、Object.defineProperty()
给对象添加一个属性并指定该属性的配置。
let person = {
isHuan: false,
yai: () => {
console.log("fefes")
},
name: ""
}
//制作访问器
Object.defineProperty(person, "name", {
get(){
console.log(name,"get")
return name
},
set(val){
name = val
console.log(name,"set")
},
})
Object.defineProperty(person,"name",{
value:"逆风",
writable: true,//可修改
enumerable: true,//可枚举
configurable: true //可操作/删除
})
console.log(person)
person.name = "chenfulong"
person.name
4、Object.defineProperties()
let person = {
name: ""
}
Object.defineProperties(person,{
"name":{
set(val){
name = val
console.log(name,"set")
},
get(){
console.log(name,"name")
return name
}
},
"age":{
value:12,
writable:true,
enumerable:true,
configurable:true
}
})
person.name = "yaohf"
person. name
console.log(person)
5、Object.entries() – ES6
返回给定对象自身可枚举属性的[key, value]数组。
let person = {
name: "yaohf",
age:12,
sex:"男",
class:"131班"
}
for(let [a,b] of Object.entries(person)){
console.log(a,b)
}
输出:
name yaohf
age 12
sex 男
class 131班
6、Object.is() – ES6
比较两个值是否相同。所有 NaN 值都相等(这与和=不同)
Object.is('foo', 'foo'); // true
Object.is(window, window); // true
Object.is('foo', 'bar'); // false
Object.is([], []); // false
var foo = { a: 1 };
var bar = { a: 1 };
Object.is(foo, foo); // true
Object.is(foo, bar); // false
Object.is(null, null); // true
// 特例
Object.is(0, -0); // false
Object.is(-0, -0); // true
Object.is(NaN, 0/0); // true
7、Object.keys() – ES6
返回一个包含所有给定对象自身可枚举属性名称的数组。
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // console: ['0', '1', '2']
var anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(anObj)); // console: ['2', '7', '100']
var myObj = Object.create({}, {
getFoo: {
value: function () { return this.foo; }
}
});
myObj.foo = 1;
console.log(Object.keys(myObj)); // console: ['foo']
8、Object.values() – ES6
返回给定对象自身可枚举值的数组。
var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj)); // ['a', 'b', 'c']
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.values(an_obj)); // ['b', 'c', 'a']
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = 'bar';
console.log(Object.values(my_obj)); // ['bar']
console.log(Object.values('foo')); // ['f', 'o', 'o']
9、hasOwnProperty()
方法用于检测一个对象是否含有特定的自身属性,返回一个布尔值
let person = {
name: "yaohf",
age:12,
sex:"男",
class:"131班"
}
console.log(person.hasOwnProperty("age"))
输出:true
function Fn() {
this.age = 'wm'
}
Fn.prototype.sex = '女'
var obj = new Fn()
// 实例化对象会继承构造函数里的属性和方法
console.log(obj.hasOwnProperty('age')) // true
console.log(Fn.prototype.hasOwnProperty('age')) //false
console.log(Fn.prototype.hasOwnProperty('sex')) //true
console.log(obj.hasOwnProperty('sex')) // false
10、isPrototypeOf()
isPrototypeOf()
用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。
isPropertyOf()
利用isPropertyOf()检查一个对象是否存在一另一个对象的**原型链**上
11、instanceof
A instanceof B
A对象是否是B对象的实例