JavaScript_01面向对象程序设计(原型【三】)常用方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_36282409/article/details/84065159
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>New Web Project</title>
    <script type="text/javascript" charset="UTF-8">
        
        //isPrototypeOf(new instance);判断原型的方法;
        //Object.getPrototypeOf();根据实列对象获得原型对象
        function Person(){
            
        }
        Person.prototype.name='z3';
        Person.prototype.age=20;
        Person.prototype.sayName=function(){alert('我是原型对象的方法!')};
       
       /* 
        var p1=new Person();
        alert(p1.name);//z3
        
        var prototypeObj=Object.getPrototypeOf(p1);
        alert(prototypeObj==Person.prototype);
        
        */
        
        
        //
        //var p2 = new Person();
                    
                  //  p2.name='w5';
                   // alert(p2.name);
                     //姣忔浠g爜璇诲彇涓�釜瀵硅薄鐨勫睘鎬х殑鏃跺�锛岄鍏堜細杩涜涓�鎼滅储.鎼滅储瀹炲垪瀵硅薄涓璶ame鐨勫睘鎬э紝鐪嬬湅鏈夋病鏈夈�
                    //濡傛灉娌℃湁锛屽啀鍘籶2鐨勫疄鍒楁墍瀵瑰簲鐨勫師鍨嬪璞¢噷鎼滅储name灞炴�锛屾湁灏辫繑鍥烇紝淇╂閮芥病鏈夎繑鍥瀠ndifind
                    //var p2 = new Person();
                   // p2.name='w5';//瀹炲垪瀵硅薄鐨刵ame
                    //delete p2.name;//鍒犻櫎鍘熷瀷瀵硅薄鐨刵ame銆�            alert(p2.name);//鑾峰彇鍘熷瀷瀵硅薄鐨刵ame.
                    
                    //
        
        
        //判断一个属性是属于原型属性还是属于实列属性。
        /*
        var p3 = new Person();
        p3.name='z6';
        alert(p3.name);
        alert(p3.hasOwnProperty('name'));
        */
       
       //in操作符:  for-in判断属性是否存在于实列对象和原型对象中.
       var p1=new Person();
       alert('name' in p1);//true
       var p2=new Person();
       p2.name='w3';
       alert('name' in p2);//true
      
       //就是判断一个属性是否存在原型中
       //在原型对象中,是否存在这个属性:第一个参数,当前对象,第二个参数:要判断的属性
       /*
       function hasPrototypeProperty(Object,name){
           return object.hasOwnProperty(name) && name in object ;
  
       }
       var p3 = new Person();
       p3.name='xiao A';
       alert(asOwnProperty(p3,'name'));
       */
       
       //ECMA5新特性  Object.keys();
       //拿到当前对象里的所有keys,返回一个数组。
       var p1=new Person();
       p1.name='z3';
       p1.age=20;
       
       var attribute=Object.keys(p1);
       alert(attribute);
       
       
       var attribute2=Object.keys(Person.prototype);
       alert(attribute2);
       
       
       //ECMA5 constructor属性,该属性是不能被枚举的[enable=false]。
       
       //Object.getOwnPropertyNames 枚举对象的所有属性,不管该内部属性能否被枚举。
       var attribute3=Object.getOwnPropertyNames(Person.prototype);
       
       alert(attribute3);
      
    </script>
</head>
<body>
    <h1>New Web Project Page</h1>
</body>

猜你喜欢

转载自blog.csdn.net/weixin_36282409/article/details/84065159