本文整理汇总了C#中IEnvironment.CreateAccessorDescriptor方法的典型用法代码示例。如果您正苦于以下问题:C# IEnvironment.CreateAccessorDescriptor方法的具体用法?C# IEnvironment.CreateAccessorDescriptor怎么用?C# IEnvironment.CreateAccessorDescriptor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IEnvironment
的用法示例。
在下文中一共展示了IEnvironment.CreateAccessorDescriptor方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Bind
private static IDynamic Bind(IEnvironment environment, IArgs args)
{
var callable = environment.Context.ThisBinding as ICallable;
if (callable == null)
{
throw environment.CreateTypeError("");
}
var target = (IObject)callable;
var thisArg = args[0];
var callArgs = environment.EmptyArgs;
var func = new NBoundFunction(environment);
if (args.Count > 1)
{
callArgs = environment.CreateArgs(args.Skip(1));
}
func.Class = "Function";
func.Extensible = true;
func.Prototype = environment.FunctionPrototype;
func.TargetFunction = target;
func.BoundThis = thisArg;
func.BoundArguments = callArgs;
var length = 0.0;
if (target.Class == "Function")
{
length = callArgs.Count - target.Get("length").ConvertToUInt32().BaseValue;
}
var lengthNum = environment.CreateNumber(length);
var thrower = environment.ThrowTypeErrorFunction;
var desc = environment.CreateDataDescriptor(lengthNum, false, false, false);
func.DefineOwnProperty("length", desc, false);
desc = environment.CreateAccessorDescriptor(thrower, thrower, false, false);
func.DefineOwnProperty("caller", desc, false);
func.DefineOwnProperty("arguments", desc, false);
return func;
}