JS-Object 对象原型

2018-03-09  本文已影响0人  Remeo

通过原型这种机制,JavaScript中的对象从其他对象继承功能特性,这种继承机制与经典的面向对象编程语言的继承机制不同。
JavaScript 常被描述为一种基于原型的语言(prototype-based language)--每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链(prototype chain),它解释了为何一个对象会拥有定义在其他对象中的属性和方法。
准确的说,这些属性和方法定义在Object的构造器函数(constructor functions)之上的prototype属性上,而非对象实例本身。

注意! 理解对象的原型(可以通过Object.getPrototypeOf(obj)或者已被弃用的__proto__属性获得)与构造函数的prototype属性之间的区别是很重要的前者是每个实例都有的属性,后者是构造函数的属性。也就是说,Object.getPrototypeOf(new Foobar())Foobar.prototype指向同一个对象。

1、构造函数的prototype属性,继承成员被定义的地方

2、Object.create()方法创建新的对象

var person2 = Object.create(person1); create()实际做的是从指定原型对象创建一个新的对象。这里的person1为原型对象创建了person2对象,在控制台输入:person2.__proto__ 结果返回person1对象。

3、对象实例的constructor属性:指向创建该对象的构造函数

person1.constructor
person2.constructor
结果都返回Person()构造器

image.png image.png
上一篇 下一篇

猜你喜欢

热点阅读