zoukankan      html  css  js  c++  java
  • javascript 对象 构造函数 原型 constructor 属性

     
    8-1 展示了 Person 构造函数、Person 的原型对象和 Person 现有两个实例之间的关系。注意,
    Person.prototype 指向原型对象,而 Person.prototype.contructor 指回 Person 构造函数。原
    型对象包含 constructor 属性和其他后来添加的属性。Person 的两个实例 person1 和 person2 都只
    有一个内部属性指回 Person.prototype,而且两者都与构造函数没有直接联系。另外要注意,虽然这两
    个实例都没有属性和方法,但 person1.sayName()可以正常调用。这是由于对象属性查找机制的原因。
    虽然不是所有实现都对外暴露了[[Prototype]],但可以使用 isPrototypeOf()方法确定两个对
    象之间的这种关系。本质上,isPrototypeOf()会在传入参数的[[Prototype]]指向调用它的对象时
    返回 true,如下所示:
    console.log(Person.prototype.isPrototypeOf(person1)); // true
    console.log(Person.prototype.isPrototypeOf(person2)); // true 
    这里通过原型对象调用 isPrototypeOf()方法检查了 person1 和 person2。因为这两个例子内
    部都有链接指向 Person.prototype,所以结果都返回 true。
    ECMAScript 的 Object 类型有一个方法叫 Object.getPrototypeOf(),返回参数的内部特性
    [[Prototype]]的值。例如:
    console.log(Object.getPrototypeOf(person1) == Person.prototype); // true
    console.log(Object.getPrototypeOf(person1).name); // "Nicholas"
    第一行代码简单确认了 Object.getPrototypeOf()返回的对象就是传入对象的原型对象。第二
    行代码则取得了原型对象上 name 属性的值,即"Nicholas"。使用 Object.getPrototypeOf()可以
    方便地取得一个对象的原型,而这在通过原型实现继承时显得尤为重要(本章后面会介绍)。
     
  • 相关阅读:
    建造者模式
    设计模式的思考
    与公司开票接口对接的设计
    读EntityFramework.DynamicFilters源码_心得_设计思想_04
    读EntityFramework.DynamicFilters源码_心得_单元测试03
    读EntityFramework.DynamicFilters源码_心得_示例演示02
    带你看懂Dictionary的内部实现
    Working With Taxonomy Field in CSOM
    SharePoint 2013 REST 以及 OData 基础
    SharePoint API如何处理时区问题
  • 原文地址:https://www.cnblogs.com/zy09/p/14680909.html
Copyright © 2011-2022 走看看