1.Object.getPrototypeOf(对象) :获取对象的隐式原型
2. Object.prototype.isPrototypeOf(obj) :判断Object.prototype是否在obj的原型链上
var obj = new Object();
// 问:obj在不在Function的原型链上
console.log(obj.isPrototypeOf(Function)); //false
// 问:Object.prototype对象在不在obj的原型链上
console.log(Object.prototype.isPrototypeOf(obj)); //true
3.对象 instanceof 函数 :判断函数的原型在不在对象的原型链上
var arr = []
console.log(arr instanceof Array); //arr 是不是一个数组 -->true
4.Object.Create(对象):创建一个空对象,并且将对象的隐式原型修改指定的参数,参数不要填null
var o = {
x: 1
}
var obj = Object.create(o)
console.log(Object.getPrototypeOf(obj)) //{x: 1}
5.Object.prototype.hasOwnProperty(属性名):判断属性名是不是对象自身的属性
var o = {
x: 1
}
var obj = Object.create(o)
obj.a = 1;
for (i in obj) {
console.log(i)
}
//输出 x a
//for in 会遍历出对象隐式原型上的属性 除非用属性描述符:对每个属性进行设置:是否可读、可写、……
for (i in obj) {
if (obj.hasOwnProperty(i)) {
console.log(i);
}
console.log(i)
}
//y因为x不是obj自身的属性,这里只输出a