zoukankan      html  css  js  c++  java
  • hasOwnproperty详细总结

    hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。

    isPrototypeOf:是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false

    function person(nickName,siteName){
                 this.nickName=nickName;
                 this.siteName;
                 this.address='上海';
                }
                person.prototype.showAdmin = function() {
                 alert(this.nickName+"是"+this.siteName+"的站长!")
                };
                person.prototype.showSite = function(siteUrl) {
                 this.siteUrl=siteUrl;    //在原型上加一个私有的属性
                 this.sayAge=function(){   //在原型上加一个私有的方法
                    alert('20岁');
                 }    
                 return this.siteName+"的地址是"+this.siteUrl;
                };
                person.prototype.job='code';
    
                var p1=new person("脚本之家1","WEB前端开发");
                var p2=new person("脚本之家2","WEB前端开发");
                p1.age1="30";
                p1.age2;
    
    
                alert(p1.hasOwnProperty("nickName"));//true      //能够检测构造函数 模板函数里的属性和方法且该属性被赋值了 所以是true
                alert(p1.hasOwnProperty("siteName"));//false      //能够检测构造函数 模板函数里的属性和方法但是该属性没有被赋值,所以是false
                alert(p1.hasOwnProperty("address"));//true      //能够检测构造函数 模板函数里的属性和方法且被赋值,所以是true
                alert(p1.hasOwnProperty("age1"));//true       //能够检测p1上的属性且该属性被赋值了,所以是true
                alert(p1.hasOwnProperty("age2"));//false       //能够检测p1上的属性但是该属性没被赋值了,所以是false
                
    
                alert(p1.hasOwnProperty("showAdmin"));//false   //hasOwnProperty是不可以检测到原型链上的属性和方法
                alert(p1.hasOwnProperty("showSite"));//false    //hasOwnProperty是不可以检测到原型链上的属性和方法
                alert(p1.hasOwnProperty("job"));//false          //hasOwnProperty是不可以检测到原型链上的属性和方法
    
    
                alert(person.prototype.hasOwnProperty("showAdmin"));//true    //person.prototype上检测是否有showAdmin  弹出true
                alert(person.prototype.hasOwnProperty("job"));//true     //person.prototype上检测是否有job   弹出true
                alert(person.prototype.hasOwnProperty("siteUrl"));//false   //person.prototype上没有siteUrl   弹出false
                alert(person.prototype.hasOwnProperty("sayAge"));//false   //person.prototype上没有siteUrl   弹出false
    
                alert(person.prototype.isPrototypeOf(p1))//true
                alert(person.prototype.isPrototypeOf(p2))//true
            function person(nickName,siteName){
                 this.nickName=nickName;
                 this.siteName=siteName;;
                }
                person.prototype.showAdmin = function() {
                 alert(this.nickName+"是"+this.siteName+"的站长!")
                };
                person.prototype.showSite = function(siteUrl) {
                 this.siteUrl=siteUrl;    //在原型上加一个私有的属性
                 this.sayAge=function(){   //在原型上加一个私有的方法
                    alert('20岁');
                 }    
                 this.sayWork=function(){
                     this.work='打杂';
                 };
                 this.sex;
    
                 return this.siteName+"的地址是"+this.siteUrl;
                };
                
                person.prototype.job='code';
    
                var p1=new person("脚本之家1","WEB前端开发");
                var p2=new person("脚本之家2","WEB前端开发");
                p1.age1="30";
                p1.age2;
    
                  alert(p1.showSite("http://www.jb51.net/"));
    
    
                alert(p1.hasOwnProperty("siteUrl"));//true   //在上面一句调用了showSite原型方法,所以原型链里就创建了私有属性和方法且被赋值了,所以弹出true
                alert(p1.hasOwnProperty("sayAge"));//true   //在上面一句调用了showSite原型方法,所以原型链里就创建了私有属性和方法且被赋值了,所以弹出true
                alert(p1.hasOwnProperty("sayName"));//true   //p1调用showSite原型方法,所以原型链里就创建私有属性和方法且被赋值了,所以弹出true
                alert(p1.hasOwnProperty("work"));//false   //p1没有调用sayWork方法,所以就不会创建私有属性和方法(work),所以弹出false
                alert(p1.hasOwnProperty("sex"));//false   //p1调用showSite原型方法,所以原型链里就创建私有属性和方法但是sex没有被赋值,所以弹出false
    
    
    
                 p1.sayAge();     //20岁
                 p2.sayAge();    //会报错  p2.sayAge is not a function   因为p2没有调用showSite原型方法,所以没有创建p2的独有属性和方法,所以会报错
    function person(nickName,siteName){
                 this.nickName=nickName;
                 this.siteName=siteName;;
                }
                person.prototype.showAdmin = function() {
                 alert(this.nickName+"是"+this.siteName+"的站长!")
                };
                person.prototype.showSite = function(siteUrl) {
                 this.siteUrl=siteUrl;    //在原型上加一个私有的属性
                 this.sayAge=function(){   //在原型上加一个私有的方法
                    alert('20岁');
                 }    
                 return this.siteName+"的地址是"+this.siteUrl;
                };
                person.prototype.job='code';
    
                var p1=new person("脚本之家1","WEB前端开发");
                var p2=new person("脚本之家2","WEB前端开发");
                p1.age1="30";
                p1.age2;
    
                  //alert(p1.showSite("http://www.jb51.net/"));
    
                alert(p1.hasOwnProperty("siteUrl"));//false   //p1没有调用showSite原型方法,所以原型链里就不会创建私有属性和方法,所以弹出false
                alert(p1.hasOwnProperty("sayAge"));//false   //p1没有调用showSite原型方法,所以原型链里就不会创建私有属性和方法,所以弹出false
                
    
    
    
                 p1.sayAge();     //20岁
                 p2.sayAge();    //会报错  p2.sayAge is not a function   因为p2没有调用showSite原型方法,所以没有创建p2的独有属性和方法,所以会报错
  • 相关阅读:
    站立会议报告(7)
    团队博客(13)
    团队博客(12)
    意见评论
    团队博客(11)
    团队博客(10)
    团队博客(9)
    团队博客(8)
    站立会议报告(6)
    Java Callable
  • 原文地址:https://www.cnblogs.com/tzz-ing/p/5072973.html
Copyright © 2011-2022 走看看