精华内容
下载资源
问答
  • 本文实例讲述了ES6 Object方法扩展的应用。分享给大家供大家参考,具体如下: 在ES6中针对对象的方法做了一些扩展和优化,下面简单总结下常用的方法 is方法判断两个对象是否全等 console.log(Object.is({},{}), {} ...
  • Ms Ajax Lib-> Object 类型扩展

    千次阅读 2007-02-28 16:31:00
    Object 类型扩展提供了基于 ECMAScript (JavaScript) 的Object 对象的扩展. 命名空间: 无. 本扩展类型是全局型的不属于任意一命名空间。 继承: 无.语法var objectVar = new Object();成员扩展

    Object 类型扩展

    提供了基于 ECMAScript (JavaScript) 的Object 对象的扩展.

    命名空间: 无. 本扩展类型是全局型的不属于任意一命名空间。

    继承: 无.

    语法

    var objectVar = new Object();

    成员扩展

    名称

    说明

    Object.getType 函数

    返回一个指定类型实例.

    Object.getTypeName 函数

    返回当前运行对象的类型名。

    备注

    Object 扩展是Microsoft AJAX库的一部分。 它为JavaScript 类库添加了许多功能,并且使之与.net更加亲和。 Object类型扩展提供了更多关于类型的描述与操作方法.

    更多关于 JavaScript 类的扩展类型的消息, 请参见 Object Object in the JScript Language Reference.

    下面的示例展示了如何使用Object类型扩展,使用getType 扩展函数来创建并引用一个实例。它也用到了getTypeName 扩展函数。

    CS

    <%@ Page Language="C#" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
    </script>

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>Untitled Page</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <asp:ScriptManager runat="server" ID="ScriptManager1">
    </asp:ScriptManager>
    </form>
    </body>
    </html>

    <script type="text/javascript">

    Type.registerNamespace('Samples');

    // Define and register a Samples.Rectangle class.
    Samples.Rectangle = function(width, height)
    {
    this._width = width;
    this._height = height;
    }

    Samples.Rectangle.prototype.getWidth = function() {
    return (this._width === undefined) ? null : this._width;
    }

    Samples.Rectangle.prototype.getHeight = function() {
    return (this._width === undefined) ? null : this._height;
    }

    Samples.Rectangle.registerClass('Samples.Rectangle');


    // Define and register a Samples.Square class.
    Samples.Square = function(length)
    {
    this._length = length;
    }

    Samples.Square.prototype.getLength = function() {
    return (this._length === undefined) ? null : this._length;
    }

    Samples.Square.prototype.setLength = function(length) {
    this._length = length;
    }

    Samples.Square.registerClass('Samples.Square');


    // Create instances of Square and Rectangle and discover their types.
    Samples.testObjectReflection = function()
    {
    var width = 200;
    var height = 100;
    var a = new Samples.Rectangle(width, height);

    var length = 50;
    var b = new Samples.Square(length);

    var name = Object.getTypeName(a);
    document.write("The type name of object /"a/" is: " + name + "</p>");

    var isSquare = Samples.Rectangle.isInstanceOfType(b)
    document.write("Object /"b/" is an instance of type Square: " + isSquare + "</p>");

    var c = Object.getType(b);
    name = Object.getTypeName(c);
    document.write("The type name of object /"c/" is: " + name + "</p>");

    var isSquare = Samples.Square.isInstanceOfType(c);
    if (isSquare)
    {
    var newLength = a.getWidth();
    c.setLength(newLength);
    document.write("Object /"c/" is a Square with a length of: " + c.getLength() + "</p>");
    }
    }

    // Run the sample.
    Samples.testObjectReflection();

    </script>

    VB

    <%@ Page Language="VB" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">

    </script>

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>Untitled Page</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <asp:ScriptManager runat="server" ID="ScriptManager1">
    </asp:ScriptManager>
    </form>
    </body>
    </html>

    <script type="text/javascript">

    Type.registerNamespace('Samples');

    // Define and register a Samples.Rectangle class.
    Samples.Rectangle = function(width, height)
    {
    this._width = width;
    this._height = height;
    }

    Samples.Rectangle.prototype.getWidth = function() {
    return (this._width === undefined) ? null : this._width;
    }

    Samples.Rectangle.prototype.getHeight = function() {
    return (this._width === undefined) ? null : this._height;
    }

    Samples.Rectangle.registerClass('Samples.Rectangle');


    // Define and register a Samples.Square class.
    Samples.Square = function(length)
    {
    this._length = length;
    }

    Samples.Square.prototype.getLength = function() {
    return (this._length === undefined) ? null : this._length;
    }

    Samples.Square.prototype.setLength = function(length) {
    this._length = length;
    }

    Samples.Square.registerClass('Samples.Square');


    // Create instances of Square and Rectangle and discover their types.
    Samples.testObjectReflection = function()
    {
    var width = 200;
    var height = 100;
    var a = new Samples.Rectangle(width, height);

    var length = 50;
    var b = new Samples.Square(length);

    var name = Object.getTypeName(a);
    document.write("The type name of object /"a/" is: " + name + "</p>");

    var isSquare = Samples.Rectangle.isInstanceOfType(b)
    document.write("Object /"b/" is an instance of type Square: " + isSquare + "</p>");

    var c = Object.getType(b);
    name = Object.getTypeName(c);
    document.write("The type name of object /"c/" is: " + name + "</p>");

    var isSquare = Samples.Square.isInstanceOfType(c);
    if (isSquare)
    {
    var newLength = a.getWidth();
    c.setLength(newLength);
    document.write("Object /"c/" is a Square with a length of: " + c.getLength() + "</p>");
    }
    }

    // Run the sample.
    Samples.testObjectReflection();

    </script>

     
    展开全文
  •  另外,和以往的C语言一样,为了使用printf()等标准函数,还需要引用stdio.h头文件,还需要说明的是,Objective-C源程序文件的扩展名不是.c而是.m。 #import int main(int argc, const char * argv[]) {...

    前言与展望

    说起iphone开发,必然要先说说iphone了,也就是苹果手机,总体来说,苹果手机的出现带动了一系列的IT行业的迅猛增长,在2007年6月29日苹果公司首发iPhone,在当年9月10日iPhone就突破了100万台,苹果公司股价涨至180美元,由于苹果手机硬件和系统几乎完美的结合,给了用户非常舒适的操作感,导致了苹果手机的疯狂热卖.从3GS爆发,到现在的4S一发不可收拾。

    在iphone应用迅猛发展的同时一大批的软件开发者把方向指向了iphone开发,而开发所用的语言-Objective-c在这个背景下也成了炙手可热的语言之一,在最新的世界编程语言排行榜中,从09年的一望无际,迅速提升到了排行榜的第5名,已然加入了开发语言的领头军之列.Java,c,c++,c#,object c.

    开发环境

    win7 64 +VMWare 7.1 + MAC OS 10.6.3

    xcode 4.3.2

    IOS SDK 4.1

    面向 对象的C语言

        提及面向对象的语言,大多数Windows下的开发者会首先想到的是C++,C#或者Java。但是,如果你首先想到的是Objective-C,那么你应该是一位Mac OS下的开发者,这个现代计算机系统中,最多应用Objective-C的Apple公司Mac OS X。

    Object-C和C++

        Object-C是在C语言的基础上,吸收了Smalltalk的面向对象成分创造出的,这与大多数以Java为基础的面向对象语言非常的不同。

        而且,与其他面向对象语言隐藏类在内存上的构造不同的是,Object-C用C语言来实现类,也就是说,和现代面向对象的思维方式相反,不是在语言中重新引进面向对象的元素,而是借助设计模式,在C语言中,不追加新元素的前提下实现面向对象的思想。举例来说,C++或者Java语言本身中就包含有类这个面向对象的概念,更通俗的说法是class这个关键字就是语言的一个组成部分,而在Object-C中,类的定义要放到头文件中进行,其本质上就是一个用typedef隐藏过的构造体。所以,Object-C和C语言有很高的亲和性,这会使熟悉Java的开发者非常难以接受,然而对熟悉C语言和设计模式的开发者,却是一个好机会。

    Object-C的编译环境

        如果系统是Mac OS X的话,安装附属的开发环境后立刻就能开始使用Objective-C 。而Linux系统下的GCC或者专门应用于Windows的GCC也能编译Objective-C。

    新的预处理命令

        Objective-C是C语言的扩张,C语言是Objective-C的子集,所以C语言不做任何修改就能在Objective-C环境下运行。更准确的说,Objective-C不是C语言本身的扩张,而是对编译器的扩张,编译器最终会将Objective-C翻译成C语言,而两者编译的结果代码也会是完全一样。在Objective-C中新追加的关键字,也不过是在头文件中用#define或者typedef的重新定义而已。

        所以,为了正确运行Objective-C,必须首先引进特定的头文件,Objective-C中新引进的关键字和类型,都定义在foundation/foundation.h这个头文件中。

        引用头文件的方式,在Object-C中增加了#import这个预处理命令。#import除了不会重复引进已经存在的文件之外(重复引用在C语言中是一个令人头疼的问题),用法和功能都和#include 一样。

    #import <头文件>
    #import "头文件"

         如果你仍然坚持使用#include来引进头文件的话,请不要忘了处理重复引用的问题。

        另外,和以往的C语言一样,为了使用printf()等标准函数,还需要引用stdio.h头文件,还需要说明的是,Objective-C源程序文件的扩展名不是.c而是.m。

    #import <foundation/foundation.h>
    
    int main(int argc, const char * argv[]) {
        NSLog(@"Hello Object-C!"); 
        return (0);
    }

        从上面的程序可以看出,Objective-C和C语言几乎完全一样,事实上Objective-C不是与C语言类似,而是和C语言具有完全的互换性,或者说本质上就是C语言。

    注释方式上,除了可以使用C语言的/*    */之外,Objective-C又增加了 //这种单行的注释方式。

     

     

     

    展开全文
  • 说说Object c的动态性

    千次阅读 2010-09-26 00:06:00
    今天写了一天的iphone程序,被iphone sdk发...郁闷之余还是有所收获,那就是感叹object c这门语言在动态性方面确实牛逼,要不是之前用过python、lua这样完全动态语言,真要被这种语言的动态性折服,难怪jobs放言obje

    今天写了一天的iphone程序,被iphone sdk发短信的功能折磨了一天, 苹果允许的发短信支持貌似仅限于sms://这样的url,这样做每次程序都要被迫中断,实在不爽,查阅了大量文档发现只有使用private framework才能自由的发送短信,而这又是苹果不允许的,不知道苹果下一版的sdk能否适当开放下短信发送的限制。

    郁闷之余还是有所收获,那就是感叹object c这门语言在动态性方面确实牛逼,要不是之前用过python、lua这样完全动态语言,真要被这种语言的动态性折服,难怪jobs放言object c是王道,并声称object c才是开发mac、iphone程序的首选, 先来说说最大的感叹之处, 那就是object c可以在不修改原始代码的情况下,往原类中添加新的成员方法,例如:

    在string.h中有如下定义:

    @interface string {

    }

    - (const char*) asUtf8;

    @end

    现在有需求,需要扩展string类的功能,加入asGbk方法,但string类不是我们自己写,我们一般的做法是继承一个mystring,或者写一个utility函数,完成这种转换,但在object c中,可以这样写

    新建stringex.h,如下定义:

    @interface string (stringex )

    - (const char*) asGbk;

    @end

    使用时记得#import “stringex.h“ 就可以了。

    这样语法我在object c的手册里没有找到具体如何称呼(也可能视而不见,请各位指点),我暂且称之为编译期插入成员方法。

    上面的语法,还可以成为sugar,毕竟这是在编译期完成的(难为gcc了),不过下面的语法则是完全动态。

    在object c里,所有成员方法的调用都是发送消息-即所有方法的调用都是动态的,而object c为此也引入了一个难看的语法,如:

    string* str = [string alloc]; //这里含义是调用string的静态方法alloc,string::alloc()

    注意,alloc在上面定义中并不存在,但这样写不会error,而是warning,说明编译期不依赖alloc函数必须存在。

    const char* utf8 = [str asUtf8]; //这里是调用方法asUtf8, str->asUtf()

    有了这样的语法支持,那么就可以实现很多传统c++无法实现的设计模式,比如代理/协议模式, 目标/动作模式,这些模式在iphone sdk中随处可见。

    最后再引出object c泛型支持就最自然不过了,再object c中id类型可以被赋值任何数据,类似与d语言auto,或者干脆就是python等脚本语言变量,例如:

    id str = [string alloc];

    const char* utf8 = [str asUtf8];

    最后说下多态, 在c++中, 多态是指运行时确定的成员方法, 但c++中的动态仅限于继承树上的类, 所有类指针存在is a关系, 而object c显然没有这样限制, 比如circle和rectangle都有display方法, 但明显rectangle和circle没有继承关系, 在c++中, 这样的类是不存在多态调用的, 但object c可以, 例如:

    circle* c=[circle alloc];

    rectangle* r=[rectangle alloc];

    id shape = i==1?c:r;

    [shape display];

    展开全文
  • Windows环境下面搭建Object C开发环境

    千次阅读 2012-04-21 12:54:51
    其中LLVM属于从GCC发展出来的,主要使用在苹果的平台中,GNU可以使用GnuStep,网址是http://wwwmain.gnustep.org/,从这里可以下载Windows版本的gcc编译器,配合codeblocks可以编译调试object c程序。   进入...

    1、安装编译器   

    Objective-C的编译器有很多,其中LLVM属于从GCC发展出来的,主要使用在苹果的平台中,GNU可以使用GnuStep,网址是http://wwwmain.gnustep.org/,从这里可以下载Windows版本的gcc编译器,配合codeblocks可以编译调试object c程序。
       
    进入下载页面,下载上面3个软件包,安装,例如安装到D:\GNUstep,

    2、安装CodeBlocks IDE环境

    下载地址:http://www.codeblocks.org/

    3、配置编译器

    安装好codeblocks之后,进入Settings->Compiler and debugger...,选择GNU GCC Compiler编译器,复制重新命名为“GNUstep MinGW Compiler“配置

      

    编译其他选项录入:-fconstant-string-class=NSConstantString -std=c99

    image

    同时指定搜索目录:
    》编译器的搜索目录是D:\GNUstep\GNUstep\System\Library\Headers
    》linker的搜索目录设置为D:\GNUstep\GNUstep\System\Library\Libraries,同时设置linker的参数:-lobjc -lgnustep-base
    或者可以在linker选项中加入D:\GNUstep\GNUstep\System\Library\Libraries下面的2个文件libgnustep-base.dll.a,libobjc.dll.a

    image

    image

    设置编译器、连接器的搜索目录

    image

    4、配置语法、文件类型,关键字等

    添加文件类型支持

    1) 进入Settings->Environment...

    2) 选择 Files extension handling 添加*.m

    3) 进入 Project->Project tree->Edit file types & categories...

    4) 在Sources, 下面添加 *.m到文件类型列表中.

    image

    添加语法高亮支持

    1) 进入 Settings->Editor...

    2) 选择 Syntax highlighting 进入Filemasks.... 添加*.m 到文件类型列表中.

    3) 进入 Keywords... (紧靠Filemasks...) 添加下面的关键字到列表中

    @interface @implementation @end @class @selector @protocol @public @protected @private id BOOL YES NO SEL nil NULL self

    语法高亮中,加入*.m扩展名
    image 

    5、代码测试

    新建一个工程,修改main.c为main.m,录入下面代码

    #import <Foundation/Foundation.h>
    
    int main (int argc, const char *argv[])
    {
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        NSLog(@"%@",@"hello world");
        [pool drain];
        return 0;
    }

    编译运行效果如下:

    2012-03-07 17:33:49.711 objc1[6080] hello world

    Process returned 0 (0x0)   execution time : 0.220 s
    Press any key to continue.



    转自博客园:在路上...

    展开全文
  • mac(object c)开发入门

    千次阅读 2019-03-30 16:34:51
    在上一篇文章中,介绍了object C的一些语法,这边文章介绍一些mac具体开发的工程相关和控件库使用。 一步一步,开始上手Mac 开发(一) 一步一步,开始上手Mac 开发(二) OC #import和@class的用法和区别 ...
  • 在百度中苦苦搜寻无果之后,转而把希望寄托到了google,第一... do Objective C files use the .m extension? up vote53down votefavorite 7 Since I started learning Objec
  • 浅谈Python C扩展

    万次阅读 2018-01-31 00:03:26
    很多时候,我们需要写Python的C扩展,例如为了提高速度,用一些C的库等等。本文首先整理了python调用C扩展以及在C中调用python的方法;然后重点分析了CPython API中的引用计数问题。 在python应用中,为了对性能...
  • ObjectBox CC ++ API 是超快速的数据库和数据同步解决方案。 这是ObjectBox运行时库,用于将ObjectBox作为CC ++应用程序中的嵌入式数据库运行。 这是一个C ++示例,它将Task数据对象(普通用户定义的struct )...
  • jQuery.extend( object ); 扩展jQuery对象本身 // jQuery.extend( object ); 扩展jQuery对象本身 // 用法一: jQuery.extend({ min: function(a, b) { return a ; }, max: function(a, b) { return a > b ?
  • Object-C

    千次阅读 2016-04-14 18:23:51
    Classes 类像其他的面向对象的语言一样,Object-C也提供创建对象的蓝本,即类。首先我们在类中定义一些可以重复使用的属性和方法。然后,我们实例化类,即对象,之后就可以使用属性和访问。Object-C和C++一样,从类...
  • (Python编程)C扩展概览

    千次阅读 2006-10-18 09:06:00
    Programming Python, 3rd Edition 翻译最新版本见:http://wiki.woodpecker.org.cn/moin/PP3eD22.3. C Extensions ... C扩展概览Because Python itself is coded in C today, compiled Python extensions can be coded
  • (Python编程)一个简单的C扩展模块

    万次阅读 2006-11-10 10:39:00
    Programming Python, 3rd Edition 翻译最新版本见:http://wiki.woodpecker.org.cn/moin/PP3eD22.4. A Simple C ... 一个简单的C扩展模块At least thats the short story; we need to turn to some code to make t
  • Object-C总结摘录

    千次阅读 2012-10-22 14:29:52
    但是,Object-C是C语言的扩展,它是C的超集。 2、 在终端使用gcc编译一个Object-C源文件main.m,命令如下: gcc –framework Fundation main.m –o man 3、 Object-C入口函数为main。
  • windows下python调用C/C++以及使用C扩展python

    万次阅读 多人点赞 2018-02-23 16:45:08
    源码路径中已经为我们生成了模版文件,helloext.c。打开内容如下: #include /* * Implements an example function. */ PyDoc_STRVAR(helloext_example_doc, "example(obj, number)\ \ Example function...
  • Object.getOwnPropertyDescriptor 方法会返回某个对象(descriptor)。ES6 引入了 Object.getOwnPropertyDescriptors 方法,返回指定对象所有自身属性(非继承属性)的描述对象。   const obj = { foo: 123, ...
  • Objective_C扩展机制学习

    千次阅读 2011-07-26 13:59:19
    首先学习obj_c的时候,是赁着c/c++的基础,所学的知识是按c/c++的方式去学习,其实obj_cc的超集当时一点也没体会到,其精髓也是完全没有理解到。随关时间的推移,慢慢了解更多。obj_cc/c++更强大,因
  • Object-c之单例模式

    千次阅读 2015-11-18 17:36:35
    Objective-c 单例设计模式(Singleton) 一、什么是单例模式:(Singleton) 单例模式的意图是是的类的对象成为系统中唯一的实例,提供一个访问点,供客户类共享资源。二、什么情况下使用单例? 1、类只能有一...
  • 使用swig为python添加c扩展总结

    千次阅读 2012-04-16 22:35:05
    1、 可以使用swig来创建c扩展程序,非常方便。目前没有时间研究内部机制,先暂时使用,后面在研究吧。2、 swig使用步骤:为库的头文件建立.i文件:%{/* Includes theheader in the wrapper code */#include...
  • Paper之EfficientDet: 《Scalable and Efficient Object Detection—可扩展和高效的目标检测》的翻译及其解读 导读:2019年11月21日,谷歌大脑团队发布了论文 EfficientDet: Scalable and Efficient Object ...
  • Object-c 观察者模式

    千次阅读 2017-07-20 20:31:17
     抽象/具体的 主题 类如下: 其实也可以对这个类进行扩展扩展一下,把扩展的那个类定义为具体的主题 类即可。  这里为了演示这个思想,不做扩展处理,下同。 #import #import "Observer.h" /** ...
  • Object.keys() ES5 引入了 Object.keys 方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。   var obj = { foo: 'bar', baz: 42 }; Object.keys(obj) // ["foo...
  • windows7下object-c编译环境的搭建

    千次阅读 2014-05-08 22:58:55
     Object C和其他很多语言一样,都需要有一个编译器。Object C 是在GCC下编译的。GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。很多人想到学习Object C就想到mac电脑,想到...
  • Object-C -> Swift3.0

    千次阅读 2016-07-28 21:39:52
    当我们开始接触一门新语言时,我们难免避免不了类型和基本语法规则。我们会急切的想知道如何用新的语法...本文旨在对于Object-C和Swift做一些基本的对比。通过阅读本文,您能快速的了解Swift3.0和Object-C的一些差别
  • Object-C与Swift混合开发

    千次阅读 2016-03-11 21:43:05
    Object-C作为Apple的iOS App开发语言服务了许多个年头,2014年Apple推出了新的编程语言Swift,更高效更安全的口号再次吸引了一大批非iOS开发程序员进入,小编认为Swift取代Object-C只是时间问题,在神州这片土地上,...
  • Object-C学习笔记(一)

    千次阅读 2012-07-18 16:04:00
    一.第一个Object-C程序 Hellow Object-C  Hellow Object-C.m: #import int main(int argc,const char *argv[]) { ... NSLog(@"Hellow,Object-C!...1. 扩展名为.m的文件表示文件含有Object-C代码,由Object
  • NodeJS C/C++扩展之Hello World~

    千次阅读 2016-06-24 14:38:23
    NodeJS C/C++扩展之Hello World

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 357,423
精华内容 142,969
关键字:

objectc扩展