/// <summary>
        ///    以名称获取字段,没有就返回nil
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public ScriptObject GetFileld(string filed)
        {
            Contract.Assert(Type == ValueType.TABLE);

            TablePart tablePart = Value.RefPartHandle.ConverToTablePart();

            ScriptObject s = tablePart.TryGetValue(filed);

            if (s != null)
            {
                return(s);
            }

            ScriptObject metaTable = tablePart.MetaTable;

            if (metaTable != null)
            {
                s = metaTable.GetFileld("_index");

                if (s.Type == ValueType.TABLE)
                {
                    return(s.GetFileld(filed));
                }
                else if (s.Type == ValueType.FUNCTION)
                {
                    //多一次拷贝(实际上)
                    //RunEnvironment.Instance.LocalStack.InvokeFunction(s, this, ScriptObject.CreateString(filed));

                    StackState state = RunEnvironment.Instance.LocalStack;

                    state.PushFunction(s);

                    state.Push(this);

                    state.Push(filed);

                    return(state.InvokeFunction());
                }
            }
            return(RunEnvironment.Nil);
        }
 public static ScriptObject Indexof(ScriptObject own, ScriptObject index)
 {
     return(own.GetFileld(index));
 }
 /// <summary>
 ///   从 own 返回 filed 字段,没有就为nil
 /// </summary>
 public static ScriptObject Select(ScriptObject own, string filed)
 {
     return(own.GetFileld(filed));
 }
 /// <summary>
 ///   从 own 返回 filed 字段,没有就为nil
 /// </summary>
 public static ScriptObject Select(ScriptObject own, string filed)
 {
     return own.GetFileld(filed);
 }
 public static ScriptObject Indexof(ScriptObject own, ScriptObject index)
 {
     return own.GetFileld(index);
 }