zoukankan      html  css  js  c++  java
  • 你不知道的 JavaScript 系列上( 55) - Object.create()

    [[Prototype]] 机制就是存在于对象中的一个内部连接,它会引用其他对象。这个链接的作用:如果在对象上没有找到需要的属性和方法,引擎就会继续在 [[Prototype]] 关联的对象上进行查找。同理,如果在后者中也没有找到需要的引用就会继续查找它的 [[Prototype]],以此类推。这一系列对象的链接被称为 “原型链”
     
    var foo = {
      something: function() {
        console.log('Tell me something good...');
      }
    }
    
    var bar = Object.create(foo);
    bar.something(); // Tell me something good...

    Object.create() 会创建一个新对象 bar 并把它关联到我们指定的对象 foo ,这样我们就可以充分发挥 [[Prototype]] 机制的威力并且避免不必要的麻烦(比如使用 new 的构造函数调用会生成 .prototype 和 .constructor)

    我们并不需要类来创建两个对象之间的关系,只需要通过委托来关联对象就足够了。而 Object.create(...) 不包含任何类的诡计,所以它可以完美的创建我们想要的关联关系。
    Object.create(...) 是 ES5 中新增的函数,所以在 ES5 之前的环境中,如果要支持这个功能的话就需要使用一段简单的 polyfill 代码,它部分实现了 Object.create(...) 功能
    if(!Object.create){
      Object.create = function(o) {
        function F(){}
        F.prototype = o;
        return new F();
      }
    }
  • 相关阅读:
    少儿编程之我见
    异常处理:java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext
    Maven异常:Could not find artifact
    三种使用分布式锁方案
    技术栈
    给定一个数组,求两数之和等于某个值
    链表--部分知识点整理
    链表
    php序列化和反序列化学习
    data类型的url
  • 原文地址:https://www.cnblogs.com/wzndkj/p/12730481.html
Copyright © 2011-2022 走看看