isPrototypeOf
isPrototypeOf :判断一个对象是否在另一个对象的原型链上.
语法:对象a.isPrototypeOf(对象b) //判断对象a是否在对象b的原型链上,返回布尔值
function Animal() {
}
var ani = new Animal()
function Bird() {
}
Bird.prototype = ani
var maque = new Bird()
console.log( Object.prototype.isPrototypeOf(maque) ); // true
console.log( ani.isPrototypeOf(maque) ); // true
var ani1 = new Animal()
console.log( ani1.isPrototypeOf(maque) ); // false
assign
用于将一个对象中可遍历的属性复制到另一个目标对象中,返回目标对象,
语法:var 新目标对象 = Object.assign(原目标对象, 被复制的对象);
var obj = {
name: '张三',
age: 12
}
var pbj = {
sex: '男',
height: 180
}
pbj.__proto__.weight = 150 // 不可遍历属性无法复制
var qbj = Object.assign(obj, pbj) // 将pbj中的属性复制到obj中
console.log(obj); // {name: '张三', age: 12, sex: '男', height: 180}
console.log(qbj); // {name: '张三', age: 12, sex: '男', height: 180}
console.log(obj === qbj); // true
create
用于创建一个对象,并指定这个对象的原型,
语法:var 对象 = Object.create(指定的原型对象, {对象键值对的描述}) // 返回创建好的对象
表示参数1必填,且参数必须是一个对象或null。
参数2是可选项,默认是空对象
defineProperty
用于监视对象某个属性被访问或被修改的操作,
语法:Object.defineProperty(对象, 属性名, {
// 对象属性的描述
writable: false, // 属性是否可修改
enumerable: true, // 属性是否可遍历
configurable: false, // 属性是否可删除
get: undefined, // 访问属性值的时候执行什么程序
set: undefined // 设置属性值的时候执行什么程序
})
keys
获取对象中所有键组成的数组。
语法:Object.keys(对象) - 返回数组
// var obj = {
// name: '张三',
// age: 12,
// isMan: true
// }
// var arr = Object.keys(obj)
// console.log(arr); //[name,age,inMan]
values
获取对象中所有值组成的数组。
// 语法:Object.values(对象) - 返回数组
// var obj = {
// name: '张三',
// age: 12,
// isMan: true
// }
// var brr = Object.values(obj)
// console.log(brr); //[张三,12,ture]