JavaScript 是一门集成了函数编程和面向对象编程的动态语言。它的对象是一个容器,封装了属性(property)和方法(method)。JavaScript的面向对象实现不是基于类,而是基于构造函数(constructor)和原型链(prototype)实现的。
一.概述
- Object.getPrototypeOf()方法? 解答: 获取参数对象的原型对象。具体见: Object.getPrototypeOf()
- Object.setPrototypeOf()方法? 解答:设置参数对象的原型对象。具体见: Object.setPrototypeOf()
- Object.create()方法? 解答:以某个对象为原型对象创建一个新对象。具体见: Object.create()
- Object.prototype.isPrototypeOf()方法? 解答: 实例对象的isPrototypeOf方法,用来判断该对象是否为参数对象的原型。具体见: Object.prototype.isPrototypeOf()
- Object.getOwnPropertyNames()和Object.keys()方法的区别? 解答:①:Object.getOwnPropertyNames方法返回一个数组,成员是参数对象本身的所有属性的键名,不包含继承的属性键名。②:Object.keys()只获取那些可以遍历的属性。具体见: Object.getOwnPropertyNames()和Object.keys()
- hasOwnProperty()方法? 解答:用于判断某个属性定义在对象自身,还是定义在原型链上。具体见: hasOwnProperty()
- in 运算符和 for…in 循环方法? 解答:in查询一个对象是否具有某个属性。包括自身的属性和继承属性。 for…in 遍历对象所有可遍历属性。具体见: in 运算符和 for…in 循环
二.Object.getPrototypeOf()
1.释义
-
Object.getPrototypeOf
方法返回参数对象的原型。这是获取原型对象的标准方法。//实例对象f的原型是F.prototype var F = function () { }; var f = new F(); Object.getPrototypeOf(f) === F.prototype // true
2.特殊原型对象
-
下面是几种特殊对象的原型。
// 空对象的原型是 Object.prototype Object.getPrototypeOf({ }) === Object.prototype // true // Object.prototype 的原型是 null Object.getPrototypeOf(Object.prototype) === null // true // 函数的原型是 Function.prototype function f() { } Object.getPrototypeOf(f) === Function.prototype // true
三.Object.setPrototypeOf()
1.释义
-
Object.setPrototypeOf
方法为参数对象设置原型,返回该参数对象。它接受两个参数,第一个是现有对象,第二个是原型对象。//Object.setPrototypeOf方法将对象a的原型,设置为对象b,因此a可以共享b的属性 var a = { }; var b = { x: 1}; Object.