zoukankan      html  css  js  c++  java
  • 用Object.create来创建对象,及其兼容性写法

    function inherit(p){
      if(p==null){
        throw TypeError();
      }
      if(Object.create){
        return Object.create(p);
      }
      var t=typeof p;
      if(t!=='object'&&t!=='function'){
        throw TypeError();
      }
      function f(){};
      f.prototype=p;
      return new f();
    }
    
    function range(from,to){
      var r=inherit(range.methods);
      r.from=from;
      r.to=to;
      return r;
    }
    
    range.methods={
      includes:function(x){
        return this.from<=x&&x<=this.to;
      },
      foreach:function(f){
        for(var x=Math.ceil(this.from);x<=this.to;x++) f(x);
      },
      toString:function(){
        return "("+this.from+'...'+this.to+')';
      }
    };
    
    var r=range(1,3);
    
    r.includes(2);
    r.foreach(console.log);
    r.toString();

    Object.create 函数

    创建一个具有指定原型且可选择性地包含指定属性的对象。

    Object.create(prototype, descriptors)

    prototype

    必需。 要用作原型的对象。 可以为 null。

    descriptors

    可选。 包含一个或多个属性描述符的 JavaScript 对象。

    “数据属性”是可获取且可设置值的属性。 数据属性描述符包含 value 特性,以及 writable、enumerable 和 configurable 特性。 如果未指定最后三个特性,则它们默认为 false。 只要检索或设置该值,“访问器属性”就会调用用户提供的函数。 访问器属性描述符包含 set 特性和/或 get 特性。

    在以下文档模式中受支持:Internet Explorer 9 标准模式、Internet Explorer 10 标准模式和 Internet Explorer 11 标准模式。

    inherit方法中,如果运行环境不支持Object.create那么先创建一个空的构造方法,然后把它的原型赋值为指定对象,然后用new实例就得到了新的对象

    rang是一个示例
  • 相关阅读:
    squid反向代理
    LVM逻辑卷管理
    磁盘分区
    磁盘阵列
    apache基本配置
    LNMP简要配置
    高性能Web服务器Nginx
    samba文件共享服务配置(multiuser机制)二 (共两节)
    samba文件共享服务配置一(共2节)
    linux 批量修改文件名 文件名只保留部分,去掉部分
  • 原文地址:https://www.cnblogs.com/lingtong/p/4081931.html
Copyright © 2011-2022 走看看