小さな/ 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;
};
}
バベルを使用している場合
npm install --save-dev babel-plugin-transform-object-assign
.babelrcの使用
{
"plugins": ["transform-object-assign"]
}
あなたは他の方法を見つけることができます ここ
jqueryを使用している場合、 jQuery.extend(target [、object1] [、objectN]) を試すことができます。あなたのコード:
const eventData = $.extend({}, eventItem);
babel
の部分に関しては、Dinesh undefinedの回答は古くなっています。これが今日のやり方です。
コマンドラインで:
npm install --save-dev @babel/plugin-transform-object-assign
あなたの.babelrc
:
{ "plugins": ["@babel/plugin-transform-object-assign"] }