Object.create new keystore和new Object的区别

欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 1740 人关注过本帖
标题:CreateObject( )函数与NewObject( )函数及AddObject 方法程序与NewObject方 ...
等 级:贵宾
威 望:12
帖 子:1450
专家分:141
结帖率:78.75%
&&问题点数:0&&回复次数:3&&&
CreateObject( )函数与NewObject( )函数及AddObject 方法程序与NewObject方法程序的区别
1、CreateObject( )函数与NewObject( )函数的差别在哪里?该使用哪一个才恰恰相恰当呢
2、AddObject 方法程序与NewObject方法程序的判别在哪里?
搜索更多相关主题的帖子:
等 级:贵宾
威 望:12
帖 子:1450
专家分:141
没有高手回答?
等 级:贵宾
威 望:88
帖 子:2774
专家分:2233
createobject( ) 函数 : 从类定义或支持 OLE 的应用程序中创建对象。
语法 :CREATEOBJECT(ClassName [, eParameter1, eParameter2, ...])
ClassName : 指定用来创建新对象的类或 OLE 对象。Visual FoxPro 按下面的顺序搜索类或 OLE 对象:
1. Visual FoxPro 基类。
2. 在内存中按加载顺序排列的用户自定义类定义。
3. 当前程序中的类。
4. 用 SET CLASSLIB 打开的 .VCX 类库中的类。
5. 用 SET PROCEDURE 打开的过程文件中的类。
6. 在 Visual FoxPro 程序执行链中的类。
7. Windows 注册表(对 OLE 对象而言)。
可对 ClassName 使用下面语法创建 OLE 对象:
ApplicationName.Class
例如,若要创建 Microsoft Excel 工作表(支持 OLE 自动化),可用下面的语法:
x = CREATEOBJECT('Excel.Sheet')
当运行这个代码时,启动 Microsoft Excel(如果还没有运行),并创建一个新的工作表。
一个类库有一个别名。若要用别名来指定类库中的对象,可包含类库别名,后接一个句点号和对象名。
eParameter1, eParameter2, ... :这些可选参数用来把值传给类的 Init 事件过程。当发出 CREATEOBJECT( ) 时执行 Init 事件,并进行对象初始化工作。
返回值类型 : 对象
说明 : 可用 CREATEOBJECT( ) 从类定义或支持 OLE 自动化的应用程序中创建对象,并将对象引用赋给内存变量或数组元素。
由用户自定义类创建对象之前,用户自定义类必须先用 DEFINE CLASS 来创建,或者必须是用 SET CLASSLIB 打开的 .VCX 可视类库中的类。
可用 = 或 STORE 来将对象引用赋给内存变量或数组元素。如果释放指定给内存变量或数组元素的对象,则内存变量或数组元素包含 Null 值。可用 RELEASE 从内存中移去内存变量或数组元素。
newobject( ) 函数 : 直接从一个 .vcx 可视类库或程序创建一个新类或对象。
语法 : NEWOBJECT(cClassName [, cModule [, cInApplication [, eParameter1, eParameter2, ...]]])
返回值类型 : 对象
cClassName : 指定类或对象,从该类或对象创建新的类或对象。
对于 cClassName,可使用以下语法创建 OLE 对象:
ApplicationName.Class
例如,为了创建一个 Microsoft Excel 工作表(支持 OLE 自动服务),可以使用以下语法:
oExcelSheet = NEWOBJECT('Excel.Sheet')
cModule : 指定 .vcx 可视类库或 Visual FoxPro程序(.prg、.mpr、.app、.exe 等等),其中包含 cClassName 指定的类或对象。默认指定一个 .vcx 可视类库;如果想指定一个程序,必须包含一个扩展名。
注意 类库可以有一个别名。为了使用类库别名指定类库中的类或对象,可在类库后面带一个点号以及对象名。
如果省略 cModule,或者 cModule 为空字符串或 null 值,则 Visual FoxPro 按以下顺序搜索类或对象:
Visual FoxPro 基类。
按加载的顺序在内存中搜索用户自定义类。
当前程序中的类。
使用 SET CLASSLIB 打开的类库。
过程文件中使用SET PROCEDURE打开的类。
Visual FoxPro 程序执行链中的类。
如果 SET OLEOBJECT 为 ON,则搜索 OLE 注册表。
cInApplication : 指定 Visual FoxPro 应用程序(.exe 或 .app),其中包含 cClassLibName 指定的 .vcx 可视类库。该应用程序必须具有扩展名。如果省略 cModule,或者cModule 为空字符串或 null 值,则忽略 cInApplication。
eParameter1, eParameter2, ... : 指定可选参数,该参数传递到类或对象的 Init 事件。
NEWOBJECT() 允许您创建一个新类或对象,而不必打开一个 .vcx 可视类库或过程文件。
可以使用 = 或 STORE,将 NEWOBJECT(?) 返回的对象引用分配给一个变量或数组元素。如果分配给变量或数组元素的一个对象被释放了,则该变量或数组元素包含 null值。可以使用 RELEASE 命令从内存中删除变量或数组元素。
addobject 方法 : 运行时,在容器对象中添加对象。
语法 : Object.AddObject(cName, cClass [, cOLEClass] [, aInit1, aInit2 ...])
cName : 指定引用新对象的名称。
cClass : 指定添加对象所在的类。
cOLEClass : 指定添加对象的 OLE 类。
aInit1, aInit2 ... : 指定传给新对象的 Init 事件的参数。
调用 addobject 方法时,将触发新添加对象的 Init 事件。在表单集中加入表单时,Load 事件在 Init 事件之前发生。
当用 addobject 方法往容器中加入对象时,对象的 Visible 属性设置为“假”(.F.)。因此您可以设置对象的属性,而不看更改对象外观时的一些中间效果。
newobject 方法 : 直接从一个 .vcx 可视类库或程序将一个新类或对象添加到一个对象中。
语法 : Object.NEWOBJECT(cObjectName, cClassName [, cModule [, cInApplication [, eParameter1, eParameter2, ...]]])
cObjectName : 指定用于引用新添加类或对象的名称。
cClassName : 指定类或对象,从该类或对象添加新的类或对象。
cModule : 指定一个 .vcx 可视类库或 Visual FoxPro 程序(.prg、.mpr、.app、.exe等等),其中包含 cClassName 指定的类或对象。默认的是一个 .vcx 可视类库;如果想指定一个程序,必须包含一个扩展名。
注意 : 一个类库可以具有别名。为了通过一个别名指定类库中的类或对象,在该类库别名后面加一个点号以及对象的名称。
如果省略 cModule,或者 cModule 为空字符串或 null 值,则 Visual FoxPro 按以下顺序搜索类或对象:
Visual FoxPro 基类。
按加载的顺序在内存中搜索用户自定义类。
当前程序中的类。
使用 SET CLASSLIB 打开的类库。
过程文件中使用 SET PROCEDURE 打开的类。
Visual FoxPro 程序执行链中的类。
如果 SET OLEOBJECT 为 ON,则搜索 OLE 注册表。
cInApplication : 指定 Visual FoxPro 应用程序(.exe 或 .app),其中包含 cClassLibName 指定的 .vcx 可视类库。该应用程序必须具有扩展名。如果省略 cModule,或者cModule 为空字符串或 null 值,则忽略 CinApplication。
eParameter1, eParameter2, ... : 指定可选参数,该参数传递到类或对象的 Init 事件。
说明 : NEWOBJECT() 允许您创建一个新类或对象,而不必打开一个 .vcx 可视类库或过程文件。
感言:学以致用。
博客:http://www.bc-cn.net/blog/user14/65009/index.shtml
等 级:新手上路
帖 子:18
NewObject()函数 比 CreateObject()函数 快
NewObject 方法 比 AddObject 方法快
版权所有,并保留所有权利。
Powered by , Processed in 0.080304 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reservedjavascript一种新的对象创建方式-Object.create() - 简书
javascript一种新的对象创建方式-Object.create()
声明:所有代码均为图片,养成动手敲的习惯,切记直接粘贴复制简单来讲,new Object()是一种通过构造函数来创建object的方式,而Object.create(proto, [ propertiesObject ]) 是E5中提出的一种新的创建一个拥有指定原型和若干个指定属性的对象的方式。其实可以理解为继承一个对象~。语法:Object.create(proto, [ propertiesObject ])参数:proto一个对象,作为新创建对象的原型。propertiesObject可选。该参数对象是一组属性与值,该对象的属性名称将是新创建的对象的属性名称,值是属性描述符(这些属性描述符的结构与Object.defineProperties()的第二个参数一样)。注意:该参数对象不能是 undefined,另外只有该对象中自身拥有的可枚举的属性才有效,也就是说该对象的原型链上属性是无效的。抛出异常如果 proto 参数不是 null 或一个对象值,则抛出一个 TypeError 异常。例子:使用Object.create实现类式继承
其实Object.create()内部依然是通过new一个构造函数的方式来实现的,它有构造函数,不过这个构造函数是隐式存在的,看一下使老旧浏览器支持Object.create方法的“polyfill”就可以对它们之间的区别一目了然了:
保持专注并持续发布(stay focused and keep shipping)。小广告:JS/React/Vue/Angular前端群:3654人阅读
NodeJs(8)
/*var F=function(){}
var son=new F();
console.log(son.__proto__==F.prototype)//true*/
/* var F={a:1}
var son=Object.create(F);
console.log(son.__proto__);
/*var F=function(){this.a=3; };
var f=new F();
var son=Object.create(F.prototype);
console.log(son.__proto__== F.prototype);//true*/
new就是该对象的 _ proto _属性指向该类的prototype
而create就直接指向显示的指向
下面我们来实现继承:
Cat.prototype=new Animal();//如上文所说new就是该对象的 _ _proto_ _属性指向该类的prototype那么这句话翻译一下就是 Cat.prototype.__proto__=Animal.prototype
function Cat(){}
function Animal(){}
Cat.prototype=new Animal();
console.log(Cat.prototype.__proto__==Animal.prototype)
这种方法的不足就是声称继承的时候创建的对象总要初始化。
所以我们干脆直接:
Cat.prototype.__proto__==Animal.prototype
这就是我们的第二种方法。
第三种:用call
function Animal(name){
this.name =
this.showName = function(){
console.log(this.name);
function Cat(name){
Animal.call(this, name);
var cat = new Cat("Black Cat");
cat.showName();
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:255471次
积分:5308
积分:5308
排名:第5448名
原创:244篇
转载:44篇
评论:90条
(7)(3)(11)(5)(1)(1)(1)(2)(13)(18)(3)(2)(5)(2)(12)(1)(1)(1)(1)(6)(9)(13)(19)(3)(1)(1)(3)(4)(30)(27)(34)(2)(1)(1)(3)(8)(32)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'请问老师new Object()和Object.create()两者有何异同?
创建对象时,new Object()和Object.create()两者有何异同?
13820 浏览
非常感谢!
上面说错了:
var a = {x:1};
var b = Object.create(a);
console.log(b);//输出:{};
console.log(b.__proto__);//输出:{x:1}
如果用 b =new object(a)
connsole.log(b);//输出:{x:1}
congsole.log(b.__proto__);//输出:{}
只要注意区分__proto__和prototype就可以了,希望对你有帮助
所以 var b = Object.create(a.prototype);
// b 继承了a的原型
这个说法是错误的,应该是b.__proto__=== a.prototype,严格等于
结论:b的原型指向a的prototype属性
点击展开后面3条评论
写下你的评论...
我想问就是polyfill里的. 如果person2 = Object.create(person1),既然person2._proto_指向的是person1.为何person2._proto_ ===person1是false。但是person2._proto_.===person1.prototype就是true了。是不是 应该指向的是person1的原型对象?
我知道了,我__proto__少写了下划线导致undefined===undefined
写下你的评论...
写下你的评论...
人是说它没有父类,对的啊
var a = new Object();//a的原型指向Object.prototype,a是没有prototype的,在chrome中a的原型用__proto__来表示: a.__proto__ ===Object.//true
不好意思,上面a.__proto__ == Object.prototype,a是Object的实例,应该是两个等号
点击展开后面1条评论
写下你的评论...
写下你的评论...
a.constructor 是指向构造函数的, 所以 a.constructor === Object,
a.constructor.prototype === Object.prototype
写下你的评论...
var a = new Object();//a的原型指向Object的prototype属性,和b没关系
比如说: var a =new Object({x:1}),这里b = {x:1},那么a和b都是Object的实例,a和b的原型都是Object.
a==b;//true
a===b;//false
表示a和b是两个不同的对象,他们的属性一样,a创建了一个b的副本,就相当于两个一模一样的苹果,仅仅是长得一样而已,但是它们是不同的对象
为何我试了一下,a===b;为true呢?
写下你的评论...
写下你的评论...
写下你的评论...
写下你的评论...
Copyright (C)
All Rights Reserved | 京ICP备 号-2

我要回帖

更多关于 create new account 的文章

 

随机推荐