clone
Object.clone(obj) -> Object
使用浅拷贝克隆传入的对象(复制所有原始的属性到结果中)。
请注意是浅拷贝,不是深拷贝。
样例
var o = { name: 'Prototype', version: 1.5, authors: ['sam', 'contributors'] };
var o2 = Object.clone(o);
o2.version = '1.5 weird';
o2.authors.pop();
o.version
// -> 1.5
o2.version
// -> '1.5 weird'
o.authors
// -> ['sam']
// 噢!浅拷贝!
...
在 Prototype 中,Object 可以看作是一个命名空间,也就是说,它把许多新的方法聚集在一起, 然后需要通过一个名称前缀(如以“Object.”开头)才能够访问。
作为普通的开发人员(指简单的使用 Prototype 而不需要对其进行扩展的开发人员),本章中最常用的方法可能是 inspect,其次是 clone。
而作为高级的开发人员,他们希望像 Prototype 一样创建自己的类,或者是把对象当作 hash 以解析对象的结构。 对于这些人来说,他们常用的方法可能是 extend、keys 和 values。
方法
clone
Object.clone(obj) -> Object
使用浅拷贝克隆传入的对象(复制所有原始的属性到结果中)。
extend
Object.extend...
include
include(value) -> Boolean
判断排列中是否包含指定的值。
这个方法的默认实现假定排列中的值具有严格有效的弱序化规则(即操作符 < 在任意两个值之间都有明确的语义)。尽管 ObjectRange 混入了 Enumerable,但是这里仍然重写了 Enumerable 中默认的 include 方法,以使它具有更好的性能 (它简单的比较 value 是否在 ObjectRange 的上下限值之内)。
译注:正如上面的描述,这个方法只是简单的比较 value 是否在 ObjectRange 的上下限值之内。所以,如果要在自定义对象上实现自己的排列,很多时候都必须重写 include 方法,另外, 在对 ObjectRange 进行遍历时,也是调用 include 方法确定当前的值是否仍在...
toObject [1.6]
toObject() -> Object
克隆 hash 內部的 Object 并返回。译注:Hash 在内部使用一个单独的 Object 保存“键/值”对。
样例
var h = new Hash({ a: 'apple', b: 'banana', c: 'coconut' });
var obj = h.toObject();
Object.inspect(h);
// -> #<Hash:{'a': 'kiwi', 'b': 'banana', 'c': 'coconut'}>
Object.inspect(obj);
// -> [object Object]
obj.a = 'orange';
h.get('a');
// -> 'apple'
...
排列(Range)描述了遵循某种规则变化的一系列的值。值必须是可推导的,更确切地说,需要实现一个 succ 方法让我们能够从一个值步进到下一个值(它的 后继者)。
译注:对于这里的 Range,大多数翻译为“范围”,但我觉得它的表现更类似于数学中的“数列”, 因为这里明显不限于数值,故译为“排列”。
Prototype 为 Number 和 String 提供了相应的 succ 方法。对于自定义对象, 如果要启用排列,你必须实现符合相应语义的 succ 方法。
ObjectRange 混入了 Enumerable,从而使得排列具有多方面的用途。 然而,需要注意的是,为获得更好的性能,通常需要重写 include 方法。
虽然 ObjectRange 提供...
GetObject 函数
从文件中返回对 Automation 对象 的一个引用。
GetObject([pathname] [, class])
参数
pathname
可选项。 完整的文件路径和名称,文件中包含了要检索的对象。 如果忽略了 pathname ,那么需要 class 。
class
可选项。 对象的类。
类参数采用的语法是 appname.objectype ,包括了以下部分:
appname
必选项。 提供对象的应用程序名称。
objectype
必选项。 要创建的对象的类的类型。
说明
使用 GetObject 函数可以从文件中访问一个 Automation 对象。 可以将由 GetObject 返回的对象赋值给对象变量。 例如: ...
CObject类 CObject是大多数MFC类的根类或基类。CObject类有很多有用的特性:对运行时类信息的支持,对动态创建的支持,对串行化的支持,对象诊断输出,等等。MFC从CObject派生出许多类,具备其中的一个或者多个特性。程序员也可以从CObject类派生出自己的类,利用CObject类的这些特性。本章将讨论MFC如何设计CObject类的这些特性。首先,考察CObject类的定义,分析其结构和方法(成员变量和成员函数)对CObject特性的支持。然后,讨论CObject特性及其实现机制。 CObject的结构 以下是CObject类的定义:class CObject{public: //与动态创建相关的函数virtual CRuntimeClass* G...
先看一个关于接口的测试代码: interface Test { public void test(); @Override public int hashCode(); @Override public String toString(); } class TestInterface implements Test { public void test() { } } public class Main { public static void main(String[] args) { Object obj = new Object(); Test test = new TestInterface(); System.out.println(test.toString()); System.out.println(test.hashCode()); System.out.println(test.equals(test)); } } 我故意保留了NetBeans IDE帮我生成的 @Override标记.这个地方看起来有些怪,按ide的提示,好像接口定义中的hashCode()方法和toString()方法重写了...
1 引言在编程的时候,常常需要访问Word文档。除了使用DDE之外,PowerBuilder还有一种操作Word的方式,就是通过OLEObjcet和OLEControl。OLEObject是不可视的OLE对象,而OLEControl则是可视的窗口控件。由于OLEObject较后者更灵活方便,如果不是必须在窗口上显示Word文档内容,使用前者是更好的选择。程序开发员在使用OLE连接Word文档的时候,常常遇到这样两个问题:第一:如果某文档已经打开,再使用程序调用的时候,会产生程序运行错误;第二:经常发现创建的WinWord.exe进程没有能够正常终止。2 分析下面我们来分析这两个错误产生的原因。对于第一个错误,往往是由于使用OLEObjectVar.ConnectToOb...