js17---创建对象:构造函数式和原型组合模式、动态原型模式、稳妥构造函数式

简介:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>
        <script type=text/javascript charset=utf-8 >
        //自定义原型对象会改变原型对象的构造器。
        //原型的概念: 原型对象里的所有属性和方法 被所有构造函数实例化出来的对象所共享
        function Person(){}
        Person.prototype = {
            constructor:Person , 
            name: 'z3' , 
            age:  20 , 
            job : '程序员' ,
            friends : ['李四','王五'] ,
            sayName : function(){alert('我的名字!')}
        };    
        var p1 = new Person();
        var p2 = new Person();    
        p1.friends.push('赵六');//数组的.push方法
        alert(p1.friends);//改了
        alert(p2.friends);



        
        //我们一般组合使用构造函数式和原型模式,在实际开发中,这种模式也是应用的最为广泛。
        // 组合使用原型和构造函数式 (定义一个类 开发时常用的方式),不能只用构造函数式或只用原型式。
        function Person(name , age , friends , job){
            this.name = name ; 
            this.age  = age ; 
            this.friends = friends ;
            this.job = job ;
        }
        Person.prototype = {
            constructor: Person , 
            sayName : function(){
                alert(this.name);//谁调用sayName,this就是谁
            }
        };
        var p1 = new Person('z3' , 20 , ['王五','赵六'] , '技术总监');
        var p2 = new Person('李四', 25 , ['王五','赵六' ,'赵7'] ,'boss');
        alert(p1.friends);
        p1.sayName();
        alert(p2.friends);
        p2.sayName();
        
        
        
        
        
        //动态原型模式:(让你的代码 都封装到一起)。动态原型模式:就是把信息都封装到函数中,这样体现了封装的概念。
        function Person(name , age , friends , job){
            this.name = name ; 
            this.age  = age ; 
            this.friends = friends ;
            this.job = job ;
            //动态原型方法:
            if( typeof this.sayName != 'function'){//第一次new一个Person的时候会在原型添加这个方法,第二次new Person对象的时候就不会创建了。typeof是小写的function,constructor是大写的Function
                Person.prototype.sayName = function(){
                    alert(this.name);
                }
            }
        }    
        /*        
        var o = {
            name:2,
            age:"22"
        }
        alert(o.sayName);//undefined
        alert(typeof o.sayName);//undefined
        */        
        
        
        
        //稳妥构造函数式: durable object(稳妥对象) 非常安全的环境中
        // 1 没有公共属性 , 2 不能使用this对象
        function Person(name , age , job){
                // 创建一个要返回的对象,工厂模式,
                var obj = new Object();
                //可以定义一下私有的变量和函数 private,js里面是var局部变量,外部访问不了,内部函数使用,类似于java里面通过private声明一些变量方法。
                var name = name ; 
                //var sex = '男';
                //var saySex = function(){};
                //添加一个方法
                obj.sayName = function(){
                    alert(name);
                }
                return obj ;                
        }
        var p1 = new Person('张三');
        p1.sayName();
        </script>
    </head>
    <body>
    </body>
</html>
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/6868739.html,如需转载请自行联系原作者

相关文章
|
2月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
36 1
JavaScript中的原型 保姆级文章一文搞懂
|
5月前
|
JavaScript 前端开发
如何在JavaScript中实现基于原型的继承机制
【8月更文挑战第14天】如何在JavaScript中实现基于原型的继承机制
34 0
|
2月前
|
JavaScript 前端开发
JS中的构造函数的含义和用法
构造函数是JavaScript中用于创建新对象的特殊函数,通常首字母大写。通过`new`关键字调用构造函数,可以初始化具有相同属性和方法的对象实例,从而实现代码复用。例如,定义一个`Person`构造函数,可以通过传入不同的参数创建多个`Person`对象,每个对象都有自己的属性值。此外,构造函数还可以包含方法,使每个实例都能执行特定的操作。构造函数的静态属性仅能通过构造函数本身访问。ES6引入了`class`语法糖,简化了类的定义和实例化过程。
31 1
|
2月前
|
存储 前端开发 JavaScript
JavaScript常用的内置构造函数
JavaScript提供的内置构造函数在数据处理、对象创建、异常处理和异步操作等方面发挥了重要作用。掌握这些构造函数及其用法,对于开发高效、可靠的JavaScript应用至关重要。通过合理使用这些内置构造函数,开发者可以更好地管理和操作各种类型的数据,提升开发效率和代码质量。
26 1
|
6月前
|
设计模式 JavaScript 前端开发
js设计模式【详解】—— 组合模式
js设计模式【详解】—— 组合模式
68 7
|
4月前
|
JavaScript 前端开发
js创建对象| 25
js创建对象| 25
|
4月前
|
JavaScript 前端开发
JavaScript基础知识-构造函数(也称为"类")定义
本文介绍了JavaScript中构造函数(也称为“类”)的定义和使用方法。
45 1
JavaScript基础知识-构造函数(也称为"类")定义
|
4月前
|
JSON JavaScript 前端开发
js原型继承|26
js原型继承|26
|
4月前
|
JavaScript 前端开发
JavaScript prototype(原型对象)
JavaScript prototype(原型对象)
42 0
|
4月前
|
JavaScript 前端开发
JavaScript基础知识-原型(prototype)
关于JavaScript基础知识中原型(prototype)概念的介绍。
47 1