Javascript 在ECMAScript 5之前,第二个参数Object.create()是如何实现的?

Javascript 在ECMAScript 5之前,第二个参数Object.create()是如何实现的?,javascript,Javascript,在处理Object.create()时,我遇到了一个问题,概括地说,它提到: 用于用对象改装IE8的polyfill。创建 功能,但是此多边形填充不支持第二个参数 需要包含以下内容的垫片: 关于如何最好地实现这一点,有各种各样的思路 以下是我正在使用的相关代码: //json_string variable is passed via php var arrayOfOptions = jQuery.parseJSON(json_string); var template = {

在处理
Object.create()
时,我遇到了一个问题,概括地说,它提到:

  • 用于用
    对象改装IE8的polyfill。创建
    
    功能,但是此多边形填充不支持第二个参数
  • 需要包含以下内容的垫片:
关于如何最好地实现这一点,有各种各样的思路

以下是我正在使用的相关代码:

//json_string variable is passed via php

var arrayOfOptions = jQuery.parseJSON(json_string);

var template = {
     // my instance that I want to initialize based on the properties provided
};

var instance = Object.create(template, {'options':{value:arrayOfOptions, enumerable: true}});
我的问题是,程序员在ES5之前是如何完成这项任务的,更具体地说,在不使用第二个参数的情况下,基于一组传递的属性初始化对象的更好/替代实现是什么

在ES5之前,程序员是如何完成这项任务的

一点也不。在ES3中有过,但没有办法设置它们。没有
对象。还要创建
。刚刚得到了DontEnum的标志

在不使用第二个参数的情况下,基于一组传递的属性初始化对象的更好/替代实现是什么

使用
extend
功能。jQuery的示例:

var instance = $.extend(Object.create(template), {options:arrayOfOptions});
自制助手功能示例:

function createAndExtend(proto, props) {
    var o = Object.create(proto);
    for (var p in props)
        o[p] = props[p];
    return o;
}
var instance = createAndExtend(template, {options:arrayOfOptions});

无论如何,您几乎不需要属性描述符。

除了ie8上的本机dom对象之外,您不需要属性描述符。这里有一个问题涉及ES5之前的可枚举属性设置