zoukankan      html  css  js  c++  java
  • 创建对象(下)

              在原型模式声明中,多了两个属性,这两个属性都是创建对象时自动生成的、——proto——属性是实例指向原型对象的指针,他的作用就是指向构造函数的原型属性constructor,通过这两个属性就可以访问原型里的属性和方法了

    //    function Box(name,age){ //构造方法
                //        this.name=name; //实例属性
                //        this.age=age;    
                //        this.run=function(){    //实例方法
                //        alert(this.name+this.age+"running....")
                //    
                //    };
                //    }
    
                function Box() {
    
                }; //这里什么都没有,如果有则为实例属性或者实例方法
                Box.prototype.name = "xixi"; //原型属性
                Box.prototype.age = 15;
                Box.prototype.run = function() { //原型方法
                        alert(this.name + this.age);
                    }
                    //    原型属性(方法)和实例属性(方法)的区别在于共享与否
                var a = new Box();
                var b = new Box();

    // 如果是实例方法,不同的实例化,他们的方法地址是不一样的,是唯一的
    // 如果是原型方法,那么他们的地址是共享的,大家都是一样的

    // alert(a.run==b.run)//true,如果是 构造函数创造的,(返回结果为false,因为他们是引用类型的值)
                //
                // alert(a.prototype)//undifined 这个属性是一个对象,访问不到
                // alert(a.__proto__)//object 这个属性是一个指针,指向prototype源性对象
                //    alert(a.constructor)//构造属性,可以获取构造函数本身


    // //作用是被原型指针定位,然后获得构造函数本身
    // //其实就是对象实例对应的原型对象的作用

                 // alert(Box.prototype.isPrototypeOf(a)); 
                //alert(Object.prototype.isPrototypeOf(a));// Object的原型所有的对象的原型
                a.name = "jack" //实例属性,并没有重写原型属性
                alert(a.name) //就近原则                        


    原型模式执行流程
    1:先查找构造函数实例里面的属性或方法,如果有则立刻返回
    2:如果构造函数实例里面没有,则去他的原型对象里面找,如果有则返回
    ps:虽然可以通过实例访问 保存在对象里面的值,但是不能通过对象实例重写原型中的值



    2017-04-1511:54:14

  • 相关阅读:
    XSD限定/Facets
    XSD元素替换(Element Substitution)
    XSD指示器
    乔布斯29年前的预言
    三年程序员生涯的感悟、总结和憧憬
    用Jetty快速开发J2EE应用
    Cygwin安装
    Maven依赖继承的写法
    Struts2自定义日期转换器
    Struts2三种数据转移方式
  • 原文地址:https://www.cnblogs.com/zhangxiaofei/p/6713753.html
Copyright © 2011-2022 走看看