Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9312319
object-create.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
object-create.js
View Options
/* global ActiveXObject -- old IE, WSH */
var
anObject
=
require
(
'../internals/an-object'
);
var
definePropertiesModule
=
require
(
'../internals/object-define-properties'
);
var
enumBugKeys
=
require
(
'../internals/enum-bug-keys'
);
var
hiddenKeys
=
require
(
'../internals/hidden-keys'
);
var
html
=
require
(
'../internals/html'
);
var
documentCreateElement
=
require
(
'../internals/document-create-element'
);
var
sharedKey
=
require
(
'../internals/shared-key'
);
var
GT
=
'>'
;
var
LT
=
'<'
;
var
PROTOTYPE
=
'prototype'
;
var
SCRIPT
=
'script'
;
var
IE_PROTO
=
sharedKey
(
'IE_PROTO'
);
var
EmptyConstructor
=
function
()
{
/* empty */
};
var
scriptTag
=
function
(
content
)
{
return
LT
+
SCRIPT
+
GT
+
content
+
LT
+
'/'
+
SCRIPT
+
GT
;
};
// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
var
NullProtoObjectViaActiveX
=
function
(
activeXDocument
)
{
activeXDocument
.
write
(
scriptTag
(
''
));
activeXDocument
.
close
();
var
temp
=
activeXDocument
.
parentWindow
.
Object
;
activeXDocument
=
null
;
// avoid memory leak
return
temp
;
};
// Create object with fake `null` prototype: use iframe Object with cleared prototype
var
NullProtoObjectViaIFrame
=
function
()
{
// Thrash, waste and sodomy: IE GC bug
var
iframe
=
documentCreateElement
(
'iframe'
);
var
JS
=
'java'
+
SCRIPT
+
':'
;
var
iframeDocument
;
iframe
.
style
.
display
=
'none'
;
html
.
appendChild
(
iframe
);
// https://github.com/zloirock/core-js/issues/475
iframe
.
src
=
String
(
JS
);
iframeDocument
=
iframe
.
contentWindow
.
document
;
iframeDocument
.
open
();
iframeDocument
.
write
(
scriptTag
(
'document.F=Object'
));
iframeDocument
.
close
();
return
iframeDocument
.
F
;
};
// Check for document.domain and active x support
// No need to use active x approach when document.domain is not set
// see https://github.com/es-shims/es5-shim/issues/150
// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
// avoid IE GC bug
var
activeXDocument
;
var
NullProtoObject
=
function
()
{
try
{
activeXDocument
=
new
ActiveXObject
(
'htmlfile'
);
}
catch
(
error
)
{
/* ignore */
}
NullProtoObject
=
typeof
document
!=
'undefined'
?
document
.
domain
&&
activeXDocument
?
NullProtoObjectViaActiveX
(
activeXDocument
)
// old IE
:
NullProtoObjectViaIFrame
()
:
NullProtoObjectViaActiveX
(
activeXDocument
);
// WSH
var
length
=
enumBugKeys
.
length
;
while
(
length
--
)
delete
NullProtoObject
[
PROTOTYPE
][
enumBugKeys
[
length
]];
return
NullProtoObject
();
};
hiddenKeys
[
IE_PROTO
]
=
true
;
// `Object.create` method
// https://tc39.es/ecma262/#sec-object.create
// eslint-disable-next-line es-x/no-object-create -- safe
module
.
exports
=
Object
.
create
||
function
create
(
O
,
Properties
)
{
var
result
;
if
(
O
!==
null
)
{
EmptyConstructor
[
PROTOTYPE
]
=
anObject
(
O
);
result
=
new
EmptyConstructor
();
EmptyConstructor
[
PROTOTYPE
]
=
null
;
// add "__proto__" for Object.getPrototypeOf polyfill
result
[
IE_PROTO
]
=
O
;
}
else
result
=
NullProtoObject
();
return
Properties
===
undefined
?
result
:
definePropertiesModule
.
f
(
result
,
Properties
);
};
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jul 3, 10:49 AM (1 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3314488
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment