首页 > 代码库 > 用Object.create来创建对象,及其兼容性写法
用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是一个示例
用Object.create来创建对象,及其兼容性写法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。