zoukankan      html  css  js  c++  java
  • 构造函数及原型

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <h2>面向对象</h2>
        <pre>
            一切皆为对象
            对象是类的一个实例,对象有属性和方法,对象表示属性的无序集合
    
            声明对象
            var person = {
                name: "张三",
                age: 20
            }
    
            2.构造函数创建对象
                用来创建对象的函数
                与普通函数的区别:
                    首字母大写
                    里面的this所指的是实例对象
                    没有return语句,直接返回对象
                    调用构造函数时,new会自动创建this对象,且类型就是构造函数类型
    
                对象有一个constructor属性,指向他的构造函数
    
            3.prototype原型模式
                javascript里面,每一个构造函数都有一个prototype属性,指向另一个对象,这个对象的所有属性和方法都会被构造函数的实例继承
    
                所以,我们可以把那些不变的属性和方法定义在prototype对象上。
    
    
                辅助方法:
                    isPrototypeOf()   判断对象是否继承了构造函数的prototype属性
                    hasOwnProperty()
                    用来判断某一个属性是自己的属性还是prototype的属性
                        如果是自己的,则返回true
                        如果是继承prototype的,则返回false
    
                    delete      删除属性
    
                    in          用来判断某个实例是否含有某个属性
                                还可以遍历某个对象的属性
    
    
    
        </pre>
        <script>
            var person = {
                name: "张三",
                age: 20,
                show: function(){
                    alert(this.name)
                }
            }
            person.height = "180";
            // person.show();
            // alert(person.height);
            //alert(person.name)
            
    
            //通过构造函数来创建对象
            function Person(name,age){
                this.name = name;
                this.age = age;
    
                //this.type = "人类";
            }
    
            Person.prototype.type = "人类";
            Person.prototype.sayHi = function(){
                alert("hello!");
            }
    
            var p1 = new Person("张三", 20);
            p1.type = "黄种人";
    
    
            var p2 = new Person("李四", 23);
    
            //alert(p1.constructor == p2.constructor);
            //alert(p1.type) //黄种人
            //console.log(p1)
    
            // p1.sayHi();
            // p2.sayHi();
            
            //alert(Person.prototype.isPrototypeOf(p1));//true
        
            //alert(p2.hasOwnProperty("type"));
            
            // delete p1.type;
            // alert(p1.type); //人类
    
            // alert("type" in p1); //true
            
    
    
            for(var k in p1){
                console.log(k+":" + p1[k])
            }
            // 输出
    
            /*name:张三
            age:20
            type:人类
            sayHi:function (){
                alert("hello!");
            }*/
    
        </script>
    </body>
    </html>
  • 相关阅读:
    UML 基础: 组件图
    如何绘制 UML 活动图
    JVM简介
    【转】Adapter 模式
    用例建模技巧
    【转】JVM内存模型以及垃圾回收
    从UML到BPEL
    用例建模指南
    关于 Assigned
    符号和基本语法
  • 原文地址:https://www.cnblogs.com/wenyang/p/6119645.html
Copyright © 2011-2022 走看看