第3章 对象基础

简介:
<!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>
    1.工厂方式:<br />
    <script type="text/javascript">
        //定义
        function createCar(color, doors, mpg) {
            var oCar = new Object();
            oCar.color = color;
            oCar.doors = doors;
            oCar.mpg = mpg;
            oCar.showColor = function () { alert("1.工厂方式:" + this.color); };
            return oCar;
        }
        //调用
        var car = createCar("red", 4, 23);
        car.showColor();
    </script>
 
    2.构造函数方式:<br />
    <script type="text/javascript">
        //定义
        function Car(color, doors, mpg) {
            this.color = color;
            this.doors = doors;
            this.mpg = mpg;
            this.showColor = function () { alert("2.构造函数方式:" + this.color); };
        }
        //调用
        var car2 = new Car("blue", 4, 23);
        car2.showColor();
    </script>
 
    3.原型方式:<br />
    <script type="text/javascript">
        //定义
        function pCar() { }
        pCar.prototype.color = "green";
        pCar.prototype.doors = 4;
        pCar.prototype.mpg = 23;
        pCar.prototype.showColor = function () { alert("3.原型方式测试:" + this.color); };
        //调用
        var car3 = new pCar();
        alert(car3 instanceof pCar); //允许用instanceof运算符检查给定变量指向的对象的类型。
        car3.showColor();
    </script>
 
    4.混合构造函数/原型方式:<br />
    <script type="text/javascript">
        //定义
        //构造函数定义属性
        function sCar(color, doors, mpg) {
            this.color = color;
            this.doors = doors;
            this.mpg = mpg;
        }
        //原型方式定义函数
        sCar.prototype.showColor = function () { alert("4.混合构造函数/原型方式测试:" + this.color); };
        //调用
        var car4 = new sCar("yellow", 4, 23);
        car4.showColor();
    </script>
 
    5.动态原型方式:<br />
    <script type="text/javascript">
        //定义
        function dCar(color, doors, mpg) {
            this.color = color;
            this.doors = doors;
            this.mpg = mpg;
            //将对象的方法放到对象内部,更符合面向对象思想
            if (typeof dCar._initialized == "undefined") {
                dCar.prototype.showColor = function () { alert("5.动态原型方式测试:" + this.color); };
                dCar._initialized = true;
            }
        }
        //调用
        var car5 = new dCar("black", 4, 23);
        car5.showColor();
    </script>
</body>
</html>
目录
相关文章
|
3天前
ES6的类的实例化过程和传统面向对象语言有什么区别?
ES6 的类的实例化过程更加简洁、直观,并且与现代编程理念更加契合,减少了一些传统面向对象语言中可能存在的复杂性和冗余性。
|
1月前
|
存储 Java
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
这篇文章详细地介绍了Java对象的创建过程、内存布局、对象头的MarkWord、对象的定位方式以及对象的分配策略,并深入探讨了happens-before原则以确保多线程环境下的正确同步。
53 0
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
|
4月前
|
数据安全/隐私保护 C++
|
4月前
|
存储 安全 编译器
|
6月前
|
设计模式 XML SQL
C++建造者模式解析:构建复杂对象的优雅方式
C++建造者模式解析:构建复杂对象的优雅方式
70 1
C++建造者模式解析:构建复杂对象的优雅方式
|
存储 编译器 C语言
C++ 基础篇之类 & 对象的关系
C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。
为什么说对象是类的一个实例?底层原理是什么?
为什么说对象是类的一个实例?底层原理是什么?
252 0
|
Java
JAVA反射构建对象
JAVA反射构建对象
63 0
|
开发者
包装对象|学习笔记
快速学习 包装对象
100 0