Object.prototype解析

Object.prototype是一个对象,用于表示Object的原型对象。几乎所有的JavaScript对象都是Object的实例,其原型链上最后一个就是指向Object.prototype。一个典型的对象继承了Object.prototype的属性和方法。

也可以创建没有原型对象的对象,比如通过Object.create(null)创建,或通过Object.setPrototypeOf(obj, null)方法来改变指定对象的原型对象。

改变Object.prototype的属性和方法,或给Object.prototype添加属性和方法,都会影响到原型链上的所有对象,除非这些对象本身有定义相同的属性和方法进一步覆盖。

var obj1 = {};
Object.getPrototypeOf(obj1) === Object.prototype; // 普通对象的原型就是Object.prototype

var n = new Number(1);
// n是一个通过Number构造函数创建的对象,其原型是Number.prototype
Object.getPrototypeOf(n) === Number.prototype; 
// 而Number.prototype的原型最终指向Object.prototype
Object.getPrototypeOf(Number.ptototype) === Object.prototype; 

var obj2 = Object.create(null);
Object.getPrototypeOf(obj2) === null; // 通过Object.create(null)创建的对象其原型为null。

var obj3 = {};
Object.setPrototypeOf(obj3, null); 
Object.getPrototypeOf(obj3) === null; // 通过Object.getPrototypeOf()方法修改对象的原型。

Object.prototype的属性特性是:

writable: false

enumerable: false

configurable: false

即不可写、不可枚举、不可配置。

Object.prototype有7个方法,分别是:

constructor:特定的函数,用于创建一个对象。指向Object本身,即Object.prototype.constructor === Object。

hasOwnProperty:返回一个布尔值,表明一个属性或方法是否是对象自有的,而非通过原型链继承的。

isPrototypeOf:返回一个布尔值,表明当前对象是否在某对象的原型链上。

propertyIsEnumerable:返回一个布尔值,表明当前属性或方法是否是对象自有的且可枚举的。

valueOf:返回对象的原始值。

toString:返回对象的字符串描述。

toLocalString:返回对象的本地化字符串

参考链接:https://zhuanlan.zhihu.com/p/52127423


相关面试题目:

下面运行结果正确的是(D )
var a = {};
var b = Object.prototype;
console.log([a.prototype === b, Object.getPrototypeOf(a) === b]);

A、[true, false]
B、[true, true]
C、[false, false]
D、[false, true]

解析:这题考的是__proto__和prototype的区别
Object实际上是一个构造函数(typeof Object的结果为"function")
使用字面量创建对象和new Object创建对象是一样的,
所以a.__proto__也就是Object.prototype,
而Object.getPrototypeOf(a)与a.__proto__是一样的,所以第二个结果为true
而实例对象是没有prototype属性的,只有函数才有
所以a.prototype其实是undefined,第一个结果为false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值