对象的方法

从变量到数组再到对象,我们打了一系列的比喻,形象的说明了它们的含义。我们把变量比作吃饭的碗,数组是多功能饭盒,对象呢还是饭盒,但是不是简单的饭盒,特点是允许自定义它的行为。这个饭盒中支持方法(函数),具有属性,灵活应用,威力无穷,这样呢,她就更加神秘和抽象了,让我们一起来领略一下她的风采吧!

 

从变量到数组再到对象,我们打了一系列的比喻,形象的说明了它们的含义。我们把变量比作吃饭的碗,数组是多功能饭盒,对象呢还是饭盒,但是不是简单的饭盒,特点是允许自定义它的行为。这个饭盒中支持方法(函数),具有属性,灵活应用,威力无穷,这样呢,她就更加神秘和抽象了,让我们一起来领略一下她的风采吧!

首先了解一下什么是对象的方法,方法就是对象的函数(可以先简单这么理解)。每个方法都有一个名称为 this 的隐藏参数, 它实际上包含了指向继承自此类的对象的引用。不过, 它也可以包含指向此类自身或派生类的引用, 取决于如何调用这个方法。 方法被通过引用存储到类对象中。
上边已经讲到对象的创建方法{}、[]、Object() 和 Array() 和释放方法,想必大家也都了解了!
此外,对象还支持以下的方法:

  • InsertAt / RemoveAt
  • Push / Pop
  • Delete
  • MinIndex / MaxIndex / Length
  • SetCapacity / GetCapacity
  • GetAddress
  • _NewEnum
  • HasKey
  • Clone
  • ObjRawSet (函数)

弃用的 (不推荐使用):

  • Insert
  • Remove

每个方法都有对应的 obj前缀函数, 这样可以区别于自定义行为创建的对象
这些 obj前缀函数是被推荐专门用于此目的的函数。
要调用这种函数, 函数名称的前缀为 “Obj” 然后传递目标对象作为第一个参数。例如:

array := [1, 2, 3]

MsgBox % ObjMaxIndex(array) " = " array.MaxIndex()

如果 “obj” 前缀函数 的参数对象或值的类型不正确,它将返回空字符串。
下边我们就拿InsertAt 作为例子详细讲解一下,其他的方法请自行查阅帮助哈!
InsertAt 插入一个或多个值到线性数组中的给定序号位置中。

Object.InsertAt(Pos, Value1 [, Value2, 。。。 ValueN])

Pos
要将 Value1 插入到数组中的序号数字。 随后的值将插入到 Pos+1, Pos+2, 等等。

Value1 。。。
要插入数组的一个或多个值。 要将另一个数组中的值一次性插入, 传递 theArray* 作为最后一个参数。

备注
InsertAt 对应的是 RemoveAt
作为关联数组对象, Pos 的整数值同时也成为 Value1在数组对象中的键名。 位于 Pos 之前或之后的键值对都会被自动改为正确的对应关系数值,哪怕键对应的值不存在也是如此 (因为对象是稀疏数组)。 例如:

x := [] 

x.InsertAt(1, "A", "B") ; => ["A", "B"] 

x.InsertAt(2, "C") ; => ["A", "C", "B"]


; 稀疏(不连续)/未赋值 元素也被保留: 

x := ["A", , "C"]

x.InsertAt(2, "B") ; => ["A", "B", , "C"] 

x := ["C"] 

x.InsertAt(1, , "B") ; => [ , "B", "C"]

InsertAt 最好仅用于处理对象中的整数键表示线性数组中位置的情况。如果对象中包含不连续的任意值整数键,比如 ID (不连续的序号) 或 handles (句柄), InsertAt 会产生出乎意料的效果。 例如:

x := [], handleX := 0x4321, handleY := 0x1234 

x.InsertAt(handleX, "A") 

MsgBox % x[handleX] ; A - 正确 

x.InsertAt(handleY, "B") 

MsgBox % x[handleX] ; 返回空值 

MsgBox % x[handleX+1] ; 这才是 "B" 的正确 "位置"

InsertAt 不会影响文本或对象键, 所以可以安全的用于混合键类型的对象。

好了今天的文章就到这里,一定要掌握对象的方法,才能了解她,这是她的小脾气。

本教程资源的其他链接:

群:AutoAHK 348016704(推荐)

如果您喜欢本文,请收藏本网站。如果你要投稿,请注册本网站或在简书上投稿到autohotkey专题。如果你觉得对你生活带来了便捷,为你带来了快乐,请捐助,河许人将为您提供更好的服务,谢谢!

人已赞赏
AHKV1学习

[教程]AutoHotKey系列教程中级教程第三节第二课:什么是对象

2016-11-13 5:22:12

AHKV1学习

[类库]autohotkey官网论坛优秀的函数库和脚本库集合

2016-11-18 12:04:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索