在js中,继承是依靠一套叫做原型链(prototype chain)的机制实现的

属性继承的本质是一个对象可以访问到它的原生链上任何一个原型对象的属性,所有属性的浅拷贝(只复制基本数据类型,不复制对象)

让我们通过以下的例子来理解

function Foo(){
}

Object.property.name = 'My Object'
Foo.property.name = 'Bar'

var obj = new Object();
var foo = new Foo();

console.log(obj.name) //输出My Object
console.log(foo.name) // 输出 Bar
console.log(foo._ _propo_ _.name)   //输出Bar
console.log(foo._ _proto_ _._ _proto_ _.name)  //输出My Object
console.log(foo._ _proto_ _.constructor.prototype.name) //输出Bar

javascript一共有三类对象,一类是用户创建的对象,一类是构造函数对象,一类是原型对象,这三类对象每一个类都有一个_ proto 属性,它指向该对象的原型,从任何对象沿着它遍历都可以追溯到Object.prototype。构造函数有prototype属性,指向一个原型对象,通过该构造函数创建对象时,被创建对象 proto _属性将会指向构造函数的prototype属相。原型对象有constructor属性,指向他对应的构造函数。

猜你喜欢

转载自blog.csdn.net/zwy15841139493/article/details/89204578