31 lines
675 B
JavaScript
31 lines
675 B
JavaScript
var t = require("../../types");
|
|
|
|
exports.BindMemberExpression = function (node, parent, file, scope) {
|
|
var object = node.object;
|
|
var prop = node.property;
|
|
|
|
var temp;
|
|
if (t.isDynamic(object)) {
|
|
var tempName = file.generateUid("temp", scope);
|
|
temp = object = t.identifier(tempName);
|
|
scope.push({
|
|
key: tempName,
|
|
id: temp
|
|
});
|
|
}
|
|
|
|
var call = t.callExpression(
|
|
t.memberExpression(t.memberExpression(object, prop), t.identifier("bind")),
|
|
[object].concat(node.arguments)
|
|
);
|
|
|
|
if (temp) {
|
|
return t.sequenceExpression([
|
|
t.assignmentExpression("=", temp, node.object),
|
|
call
|
|
]);
|
|
} else {
|
|
return call;
|
|
}
|
|
};
|