gpt4 book ai didi

javascript - IE不支持方法 'assign',怎么办

转载 作者:可可西里 更新时间:2023-11-01 02:35:32 24 4
gpt4 key购买 nike

我有一个小的/javascript,Babel 脚本,它在 Chrome 和 Firefox 浏览器中运行良好,但在 Internet Explorer 11 中运行失败。

我希望有人能帮助我。

这是我的功能:

getDaysWithEvents() {
// Get all the days in this months calendar view
// Sibling Months included
const days = this.getCalendarDays();

// Set Range Limits on calendar
this.calendar.setStartDate(days[0]);
this.calendar.setEndDate(days[days.length - 1]);

// Iterate over each of the supplied events
this.props.events.forEach((eventItem) => {

const eventStart = this.getCalendarDayObject(eventItem.start);
const eventEnd = this.getCalendarDayObject(eventItem.end);
const eventMeta = this.getEventMeta(days, eventStart, eventEnd);

if (eventMeta.isVisibleInView) {
const eventLength = eventMeta.visibleEventLength;
const eventSlotIndex = days[eventMeta.firstVisibleDayIndex].eventSlots.indexOf(false);
let dayIndex = 0;

// For each day in the event
while (dayIndex < eventLength) {
// Clone the event object so we acn add day specfic data
const eventData = Object.assign({}, eventItem);

if (dayIndex === 0) {
// Flag first day of event
eventData.isFirstDay = true;
}

if (dayIndex === eventLength - 1) {
// Flag last day of event
eventData.isLastDay = true;
}

if (!eventData.isFirstDay || !eventData.isLastDay) {
// Flag between day of event
eventData.isBetweenDay = true;
}

// Apply Event Data to the correct slot for that day

days[eventMeta.firstVisibleDayIndex + dayIndex].eventSlots[eventSlotIndex] = eventData;

// Move to next day of event
dayIndex++;
}
}
});

return days;
}

错误:

SCRIPT438: The object does not support the property or method 'assign'

这一行有错误:var eventData = Object.assign({}, eventItem);

我可以重写这一行吗?

如何解决?

最佳答案

IE 不支持 Object.assign()

使用polyfil

    if (typeof Object.assign != 'function') {
Object.assign = function(target, varArgs) { // .length of function is 2
'use strict';
if (target == null) { // TypeError if undefined or null
throw new TypeError('Cannot convert undefined or null to object');
}

var to = Object(target);

for (var index = 1; index < arguments.length; index++) {
var nextSource = arguments[index];

if (nextSource != null) { // Skip over if undefined or null
for (var nextKey in nextSource) {
// Avoid bugs when hasOwnProperty is shadowed
if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
to[nextKey] = nextSource[nextKey];
}
}
}
}
return to;
};
}

如果你正在使用 babel

npm install --save-dev babel-plugin-transform-object-assign

使用.babelrc

{
"plugins": ["transform-object-assign"]
}

你可以找到其他方法here

关于javascript - IE不支持方法 'assign',怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44244468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com