`

几种自定义方法

 
阅读更多
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <script type="text/javascript">
        //1.创建Object,为其添加属性方法
        var person = new Object();
        person.name = "Nicholas";
        person.age = 29;
        personal.job = "Software Engineer";

        personal.sayName = function () {
            alert(this.name);
        };

        /*
        缺点:使用一个接口创建很多对象,会产生大量重复代码
        */

        //2.工厂模式
        function createPersonal(name, age, job) {
            var o = new Object();
            o.name = name;
            o.age = age;
            o.job = job;
            o.sayName = function () {
                alert(this.name);
            };
            return o;
        }

        /*
        工厂模式解决了对象相似问题,却没有解决对象识别问题(怎样知道一个对象的类型)
        */

        //3.构造函数模式
        function Person(name, age, job) {
            this.name = name;
            this.age = age;
            this.job = job;
            this.sayName = function () {
                alert(this.name);
            };
        }

        /*
        构造函数模式没有显式的创建对象,直接将方法和属性赋给了this对象,没有return语句
        要创建Person的新实例,必须使用new操作符,实际经历4个步骤
        a.创建一个新对象
        b.将构造函数的作用域赋给新对象(this指向这个新对象)
        c.执行构造函数,为新对象添加属性
        d.返回新对象
        构造函数模式创建的对象可以识别其类型,但每个方法都要在每个实例上重建一遍
        */

        //创建两个实例,创建两个相同的方法没必要,可以把函数定义转到方法外部
        function Person(name, age, job) {
            this.name = name;
            this.age = age;
            this.job = job;
            this.sayName = sayName;
        }

        function sayName() {
            alert(this.name);
        }

        /*
        这样解决了两个方法做同一件事的的问题,但在全局作用域上定义的函数只能被某个对象调用,如果对象定义需要很多方,就要定义很多全局函数,自定义的引用类型就没有封装         性了
        */

        //4.原型模式
        function Person() {
        }

        Person.prototype.name = "Nocholas";
        Person.prototype.age = 29;
        Person.prototype.job = "Software Engineer";
        Person.prototype.sayName = function () {
            alert(this.name);
        }

        /*
        原型模式所有参数默认取得相同的值,属性若为引用类型,多个实例之间互相影响
        */

        //5.构造函数原型混合模式
        function Person(name, age, job) {
            this.name = name;
            this.age = age;
            this.job = job;
        }

        Person.prototype.sayName = function () {
            alert(this.name);
        }

        /*
        构造函数用于定义实例属性,原型用于定义方法和共享属性,。eigenvalue实例都会有一份自己实例属性的副本,同时享用着对共享方法的引用
        */


    </script>
</body>
</html>


分享到:
评论

相关推荐

    几种自定义Progress

    Android几种自定义 Progress很好用 很好用

    几种自定义view

    压缩包中含有六个自定义view的实列” 仿优酷菜单、水波纹、自定义view实现viewpager、滑动开关、下拉菜单等

    android 多选框自定义

    然而,当默认样式无法满足需求时,我们可以考虑以下几种自定义方法: 1. **绘制自定义检查标记**:Android的多选框默认显示一个勾选标记。我们可以通过重写`CheckBox`的`onDraw()`方法,或者创建一个自定义`...

    几种自定义绘制控件及源码

    本资源包包含了几个自定义绘制控件的源码和DEMO,帮助开发者深入理解这一技术。下面我们将详细探讨自定义绘制控件的基本概念、实现方法以及可能的应用场景。 一、自定义绘制控件的概念 自定义绘制控件是指不依赖...

    Android界面之几种常用的自定义Dialog

    本文将深入探讨几种常用的自定义Dialog的实现方法,以及如何通过自定义来满足各种复杂的UI需求。 首先,我们了解下Dialog的基本概念。Dialog在Android中是一种轻量级的窗口,通常用于显示临时信息或者请求用户的...

    Android界面之几种常用的自定义Dialog.zip

    本资料主要探讨了Android界面中的几种常用自定义Dialog实现方法,以下是对这些知识点的详细说明: 1. **自定义对话框的基本构建** 在Android中,创建一个自定义Dialog通常需要继承`AppCompatDialogFragment`或`...

    基于Android自定义实现的几种进度条

    因此,自定义进度条成为了一种常见实践。 1. **自定义属性定义** 要自定义进度条,首先需要在`res/values/attrs.xml`中定义自定义属性,如进度条的颜色、宽度、高度、动画效果等。例如,可以定义一个属性`...

    奥维8种新版自定义地图包括Google地图.zip

    自定义地图的使用方法非常简单,用户只需将提供的.ovmap文件导入到奥维互动地图软件中。对于电脑用户,可以直接将文件拖放到软件界面,或者通过软件的“导入地图”功能进行加载。对于手机端用户,可以通过邮件、蓝牙...

    C# 自定义控件 自定义ComboBox

    自定义ComboBox的过程通常包括以下几个步骤: 1. **创建新类**:首先,你需要创建一个新的类并继承自System.Windows.Forms.ComboBox。这将让你的自定义控件拥有ComboBox的所有基本功能,并且可以在其中添加自己的...

    Python3导入自定义模块的三种方法详解

    在Python3中,有三种主要的方式来导入自定义模块,让我们详细地探讨每一种方法: 1. **直接导入**: 当你的自定义模块(如`pwcong`)与主执行文件(如`main.py`)位于同一目录或其父目录下时,可以直接使用`import...

    Eclipse注释模板自定义

    在“Code Templates”界面,你可以看到预设的几种注释类型,如类、方法、构造函数等。点击对应的模板,如"Comments -&gt; Methods",然后在右侧的编辑框中输入或修改自定义的注释内容。可以使用变量来动态插入如作者名...

    swing中自定义对话框的几种实际用法

    在Swing中,对话框是一种特殊的窗口,用于向用户提供临时信息或者需要用户进行交互的情况。自定义对话框则允许开发者根据需求定制对话框的外观和行为,以满足特定的应用场景。 一、Swing中的对话框类型 Swing提供了...

    一种自定义按钮控件及使用

    首先,自定义按钮控件的设计通常涉及到以下几个关键点: 1. **外观设计**:自定义按钮的外观可以根据项目需求进行个性化定制,包括形状、颜色、边框、阴影、文字样式等。开发者可能需要使用图形设计工具(如Sketch...

    基于QT的四种自定义combo控件

    在实现这些自定义ComboBox时,我们还需要注意以下几点: - 布局管理:确保控件的布局适应不同屏幕尺寸和分辨率,可以使用QLayout进行灵活的布局。 - 样式表:利用QT的样式表(QSS)来定制控件的外观,如边框、背景...

    C#自定义控件库

    自定义控件的创建通常涉及以下几个关键知识点: 1. **继承与派生**:在C#中,自定义控件通常是通过继承已有的系统控件(如Button、Label等)或UserControl类来实现的。这样可以从父类继承一些基本属性和方法,并...

    内置几种了常用的弹窗,十几种良好的动画,将弹窗和动画的自定义设计的极其简单

    内置几种了常用的弹窗,十几种良好的动画,将弹窗和动画的自定义设计的极其简单;目前还没有出现XPopup实现不了的弹窗效果。 内置弹窗允许你使用项目已有的布局,同时还能用上XPopup提供的动画,交互和逻辑封装。UI...

    iOS、UITableViewCell、自定义

    自定义UITableViewCell主要涉及以下几个方面: 1. 创建UITableViewCell子类:通过继承UITableViewCell,我们可以添加自定义的UI元素,如UILabel、UIImageView、UIButton等,并在子类中重写layoutSubviews方法来布局...

    android 自定义view及自定义属性

    自定义View通常涉及到以下几个步骤: 1. **创建新类**:首先,你需要继承一个已有的View类,如`View`、`TextView`或`ImageView`等,然后在新的类中添加自定义功能。 2. **重写onDraw()方法**:这是绘制View的核心...

    DataGridView添加自定义Columntype

    默认情况下,DataGridView提供了几种内置的ColumnType,如`DataGridViewTextBoxColumn`、`DataGridViewTextBoxColumn`等。然而,在某些情况下,这些内置类型可能无法满足我们的需求,这时就需要创建自定义的Column...

Global site tag (gtag.js) - Google Analytics