技术中心

这里象征着我们的态度和能力

>Java面向对象设计 构造函数设计
发布者:中国IT实验室    信息来源:中国IT实验室    发布时间:2012-01-09      浏览次数:4767
分享到:

新浪微博

腾讯微博

QQ空间

豆瓣网

QQ好友

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

    在Javascript面向对象设计一――工厂模式 中介绍了使用CreateEmployee()函数创建员工类。ECMAScript中的构造函数可以用来创建特定类型的对象,如Object和Array这样的原生构造函数,在运行时会自动出现在执行环境中,此外也可以创建自定义的构造函数,从而创建自定义对象类型的属性和方法。我们将使用构造函数模式将工厂模式进行改写。

    function Employee(name, age, job) {

    this.name = name;

    this.age = age;

    this.job = job;

    this.sayName = function () {

    alert(this.name);

    };

    }

    var Jim = new Employee("jim", 22, "SoftWare Engineer");

    var Sun = new Employee("Sun", 24, "Doctor");

    Jim.sayName();

    Sun.sayName();

    在以上代码中Employee函数取代了CreateEmployee函数,Employee中的代码与CreateEmployee中的代码不同如下:

    没有显示的创建对象

    直接将属性和方法赋给了this对象

    没有return语句

    要创建Employee类的新实例,必须使用new操作符,实际会经历四个步骤:

    创建一个新对象

    将构造函数的作用域赋给新的对象

    执行构造函数中代码

    返回新对象

    以上代码最后Jim和Sun中分别保存着Employee的两个不同实例,这两个实例都有一个constructor(构造函数)属性,该属性指向Employee,可以做如下测试

    alert(Jim instanceof Employee); //true

    alert(Sun instanceof Employee);//true

    同时这两个对象又都是Object类型的,可通过如下代码检测。

    alert(Jim instanceof Object); //true

    alert(Sun instanceof Object);//true

    创建自定义的构造函数意味着将来可以把它的实例标石为一种特定的类型,而这也正是构造函数模式胜过工厂模式的地方。

    下面详细讲解一下构造函数:

    将构造函数当做函数

    构造函数与其他函数的唯一区别就在于调用它们的方式不同。但是构造函数也是函数,不存在定义构造函数的特殊语法。其实,任何函数,只有通过new来调用,那他就可以作为构造函数,例如,Employee除了以上用new方法调用外,还可以用如下方式来调用。

    //作为普通函数调用

    Employee("Sun", 28, "SoftWare Engineer"); //添加到window中

    window.sayName();//Sun

    //在另一个对象的作用域中调用

    var o = new Object();

    Employee.call(o, "Sun", 28, "SoftWare Engineer");

    o.sayName();//Sum

    这样就解决了两个函数做同一件事情的问题,但是新的问题又会出现了,这个在全局作用域中定义的函数,实际上只能被某个对象引用,而且最要命的问题是,如果对象需要定义很多方法,那么就需要定义很多个全局函数,所以这个自定义的引用类型,就没有任何封装性可言了。

4000-880-989
(24小时热线)
联系客服
微信公众号

官方公众号

小程序

©2008-2022 CORPORATION ALL Rights Reserved. 昆明奥远科技有限公司版权所有 滇ICP备09003328号-1 滇公网安备 53011102000818号
昆明那家网络公司好,新媒体运营,网站优化,网络推广,网站建设,网页设计,网站设计,网站推广,云南网站公司,昆明新媒体公司,云南网红主播,昆明SEO公司,昆明网站建设,昆明网络推广,昆明网站优化,昆明网站推广,红河网站建设,大理网络公司,曲靖网络公司,丽江网站设计,昭通网络公司,保山大数据服务,智慧高速建设,智慧校园服务,云南IDC服务商,网络安全测评,等保测评,网站关键词排名优化服务,服务客户尽超2000余家,一切尽在奥远科技,服务电话:13888956730