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();
      }
    }
  • 相关阅读:
    Android设计模式(三)--装饰模式
    kmp算法总结
    SDWebImage源代码解析(二)
    关于C++构造函数一二
    逆向随笔
    iOS中的crash防护(二)KVC造成的crash
    git-osc自己定义控件之:CircleImageView
    java中继承关系学习小结
    openwrt针对RT5350代码下载,配置和编译
    MySQL监控
  • 原文地址:https://www.cnblogs.com/wzndkj/p/12730481.html
Copyright © 2011-2022 走看看