美文网首页
JS-Object 对象原型

JS-Object 对象原型

作者: Remeo | 来源:发表于2018-03-09 14:52 被阅读0次

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

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

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

  • 继承的属性和方法是定义在prototype属性上的(你可以称之为子命名空间)--那些以Object.prototype.开头的属性而非仅仅以Object.开头的属性。prototype属性是一个对象,我们希望被原型链下游的对象继承的属性和方法都被储存在其中。
  • 于是,Object.prototype.watch() Object.prototype.valueOf()等等成员,适用于任何继承自Object()的对象类型,包括使用构造器创建的新的对象实例。
  • Object.keys() Object.is()以及其他不在prototype对象内的成员,不会被“对象实例”或“继承自Object()的对象类型“所继承,这些方法/属性仅能被Object()构造器自身使用.
  • 构造函数的prototype属性指向一个对象,在这个对象中定义需要被继承的成员。而原型对象(对象的原型)是一个内部对象,应该使用__proto__ 或 Object.getPrototypeOf(obj)访问。

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

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

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

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

  • 你可以在constructor属性的末尾添加一对圆括号(括号中包含所需的参数),从而用这个构造器创建另一个对象实例。毕竟构造器是一个函数,故可以通过圆括号调用,只需要在前面添加 new关键字,便能将此函数作为构造器使用。
    var person3 = new person1.constructor(参数...)
  • 想要获得构造器对象的名字:
    person1.constructor.name
image.png image.png

相关文章

  • JS-Object 对象原型

    通过原型这种机制,JavaScript中的对象从其他对象继承功能特性,这种继承机制与经典的面向对象编程语言的继承机...

  • JS-Object 对象

    一、概述 JavaScript 原生提供Object对象(注意起首的O是大写),JavaScript 的所有其他对...

  • JS-Object 原型式继承

    如何创建一个继承自另一个对象的JavaScript对象呢? 定义一个只定义了一些属性的Person构造器 所有方法...

  • javascript中面向对象编程-创建对象之原型模式

    理解名词:对象 原型对象 原型属性 函数 构造函数 实例 对象: Object,创建对象,对象属性方法原型对象:...

  • JS重要概念之原型与原型链

    #Prototype原型对象 原型对象Function.prototype,具备以下特点:原型对象prototyp...

  • 📕 原型对象

    基本概念 原型 每一个对象都有它的原型对象,可以使用自己原型对象上的所有属性和方法 原型链 对象有原型,原型也是对...

  • 原型对象和对象原型以及原型链

    首先我们要知道,什么是原型对象,什么又是对象原型? 1.原型就是原型对象------prototype 作用就是...

  • 面向对象之原型对象和其他补充

    原型对象概念 原型对象的作用 如何访问构造函数的原型对象 ① 构造函数.protoType ② 对象.__prot...

  • JavaScript

    原型: 原型对象也是普通的对象,是对象一个自带隐式的 proto 属性,原型也有可能有自己的原型,如果一个原型对象...

  • Javascript-原型与原型链

    简单介绍 JavaScript 每个对象都拥有一个原型对象,对象以其原型为模板从原型中继承方法和属性; 原型对象也...

网友评论

      本文标题:JS-Object 对象原型

      本文链接:https://www.haomeiwen.com/subject/rhepfftx.html