Page 170 - Node.js开发指南
P. 170
附录 A JavaScript 的高级特性 163
图A-1 解析了它们之间错综复杂的关系。 1
2
3
4
5
6
图 A-1 JavaScript 原型之间的关系
在 JavaScript 中,继承是依靠一套叫做原型链(prototype chain)的机制实现的。属性
继承的本质就是一个对象可以访问到它的原型链上任何一个原型对象的属性。例如上例的
7
foo 对象,它拥有 foo. __proto__ 和 foo. __proto__.__proto__ 所有属性的浅拷
贝(只复制基本数据类型,不复制对象)。所以可以直接访问foo.constructor(来自foo.
__proto__,即Foo.prototype),foo.toString(来自foo. __proto__.__proto__,
即Object.prototype)。 8
A.3.5 对象的复制
JavaScript 和 Java 一样都没有像C语言中一样的指针,所有对象类型的变量都是指向对 9
象的引用,两个变量之间赋值传递一个对象并不会对这个对象进行复制,而只是传递引用。
有些时候我们需要完整地复制一个对象,这该如何做呢? Java 语言中有 clone 方法可以实
现对象复制,但 JavaScript 中没有这样的函数。因此我们需要手动实现这样一个函数,一个
简单的做法是复制对象的所有属性: 10