• hasOwnProperty()&&isPrototypeOf()


    1、hasOwnProperty()

    hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。如果有,返回true,否则返回false

    该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法。

    IE 5.5+、FireFox、Chrome、Safari、Opera等主流浏览器均支持该函数。

    语法:

    object.hasOwnProperty(propertyName)

    参数:

    参数描述
    propertyName String类型指定的属性名称



    返回值:

    hasOwnProperty()函数的返回值为Boolean类型。如果对象object具有名称为propertyName的属性,则返回true,否则返回false

    此方法不会检查对象的原型链中是否存在该属性,该属性只有是对象本身的一个成员才会返回true

    复制代码
     1 function Site(){
     2     this.name = "CodePlayer";
     3     this.url = "http://www.365mini.com/";
     4 
     5     this.sayHello = function(){
     6         document.writeln("欢迎来到" + this.name);
     7     };
     8 }
     9 
    10 var obj = {
    11     engine: "PHP"
    12     ,sayHi: function(){
    13         document.writeln("欢迎访问" + this.url);
    14     }
    15 };
    16 // 使用对象obj覆盖Site本身的prototype属性
    17 Site.prototype = obj;
    18 
    19 var s =  new Site();
    20 document.writeln( s.hasOwnProperty("name") ); // true
    21 document.writeln( s.hasOwnProperty("sayHello") ); // true
    22 // 以下属性继承自原型链,因此为false
    23 document.writeln( s.hasOwnProperty("engine") ); // false
    24 document.writeln( s.hasOwnProperty("sayHi") ); // false
    25 document.writeln( s.hasOwnProperty("toString") ); // false
    26 
    27 // 想要查看对象(包括原型链)是否具备指定的属性,可以使用in操作符
    28 document.writeln( "engine" in s ); // true
    29 document.writeln( "sayHi" in s ); // true
    30 document.writeln( "toString" in s ); // true
    复制代码

    2、isPrototypeOf()

    isPrototypeOf()函数用于指示对象是否存在于另一个对象的原型链中。如果存在,返回true,否则返回false

    该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法。

    IE 5.5+、FireFox、Chrome、Safari、Opera等主流浏览器均支持该函数。

    语法:

    prototypeObject.isPrototypeOf( object )

    参数:

    参数描述
    object Object类型一个对象,将对其原型链进行检查



    返回值:

    isPrototypeOf()函数的返回值为Boolean类型。如果object当前的原型链中存在prototypeObject对象,则isPrototypeOf()方法返回true。原型链用于在同一个对象类型的不同实例之间共享功能。如果object不是对象,或者prototypeObject对象不出现在object的原型链中,则该方法返回false

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    function Site(){
        this.name = "CodePlayer";
        this.url = "http://www.365mini.com/";
     
        this.sayHello = function(){
            document.writeln("欢迎来到" this.name);
        };
    }
     
    var s =  new Site();
    document.writeln( Site.prototype.isPrototypeOf(s) ); // true
     
    var obj = {
        engine: "PHP"
        ,sayHi: function(){
            document.writeln("欢迎访问" this.url);
        }
    };
    // 使用对象obj覆盖Site本身的prototype属性
    Site.prototype = obj;
     
    var s2 =  new Site();
    document.writeln( obj.isPrototypeOf(s2) ); // true

      公共示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    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";
     
            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

      

     
    love life,love work!---身为屌丝,向往的仍然是逆袭的故事。
  • 相关阅读:
    linux 短信收发
    sama5d3 环境检测 adc测试
    【Codeforces 723C】Polycarp at the Radio 贪心
    【Codeforces 723B】Text Document Analysis 模拟
    【USACO 2.2】Preface Numbering (找规律)
    【Codeforces 722C】Destroying Array (数据结构、set)
    【USACO 2.1】Hamming Codes
    【USACO 2.1】Healthy Holsteins
    【USACO 2.1】Sorting A Three-Valued Sequence
    【USACO 2.1】Ordered Fractions
  • 原文地址:https://www.cnblogs.com/libin-1/p/5769563.html
Copyright © 2020-2023  润新知