javascriptの中のhasOwn PropertyとisPrototypeOf

3580 ワード

ハスOwnProperty:オブジェクトが名前を与える属性やオブジェクトがあるかどうかを判断するために使用されます.ただし、この方法では、オブジェクトのプロトタイプチェーンにこの属性があるかどうかを確認できません.この属性はオブジェクト自身のメンバーでなければなりません.isProttypeOfは、そのプロトタイプチェーンのオブジェクトが指定されたオブジェクトのインスタンスに存在するかどうかを確認するために使用され、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 atr in object){
consolie.log(atr+「:」object[atr]);
)
2 hasOwnProperty()はカスタム属性しか取得できず、プロトタイプチェーンの属性は取得できません.
「str」.hasOwnProperty(「split」);false
Stering.property.hasOwnProperty(「split」);true