javascript中的hasOwnProperty和isPrototypeOf

hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。
isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。

function siteAdmin(nickName,siteName){
            this.nickName=nickName;
            this.siteName=siteName;
        }
        siteAdmin.prototype.showAdmin = function() {
            alert(this.nickName+"是"+this.siteName+"的站长!")
        };
        siteAdmin.prototype.showSite = function(siteUrl) {
            this.siteUrl=siteUrl;
            return this.siteName+"的地址是"+this.siteUrl;
        };
        var matou=new siteAdmin("愚人码头","WEB前端开发");
        var matou2=new siteAdmin("愚人码头","WEB前端开发");
        matou.age="30";
//      matou.showAdmin();
//      alert(matou.showSite("http://www.css88.com/"));
        alert(matou.hasOwnProperty("nickName"));//true
        alert(matou.hasOwnProperty("age"));//true
        alert(matou.hasOwnProperty("showAdmin"));//false
        alert(matou.hasOwnProperty("siteUrl"));//false
        alert(siteAdmin.prototype.hasOwnProperty("showAdmin"));//true
        alert(siteAdmin.prototype.hasOwnProperty("siteUrl"));//false
        alert(siteAdmin.prototype.isPrototypeOf(matou))//true
        alert(siteAdmin.prototype.isPrototypeOf(matou2))//true

 

1 for in可以获取object的所有属性,包括自定义属性以及原型链属性。

for(var attr in object){

  console.log(attr+":"object[attr]);

}

2 hasOwnProperty()只能获取自定义属性,无法获取原型链属性。

“str”.hasOwnProperty("split");//false

String.property.hasOwnProperty("split");//true

posted @ 2015-07-16 16:57  nd  阅读(1899)  评论(0编辑  收藏  举报