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之前的可枚举属性设置