javascript isPrototypeOf()与getPrototypeOf()方法

关于isPrototypeOf()方法,在此我把前面讲的原型模式图中的代码直接拿过来用。我们先来看看isPrototypeOf()方法的语法:

语法

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

参数列表

参数描述
function必须 原型对象的函数名
object必须 一个实例对象
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script type="text/javascript">
        function Person(){
        }

        Person.prototype.name="Nicholas";
        Person.prototype.age=29;
        Person.prototype.job="software Engineer";
        Person.prototype.sayName=function(){
            return this.name;
        }

        var person1=new Person();
        var person2=new Person();

        document.write(person1.sayName());
        document.write("<br>");

        //下面我们来分别检测一下person1与person2分别是否处在Person对象的原型链中
        document.write(Person.prototype.isPrototypeOf(person1));
        document.write("<br>");
        document.write(Person.prototype.isPrototypeOf(person2));
    </script>
</body>
</html>

output:

Nicholas
true
true

getPrototypeOf()

返回对象的原型。

语法

Object.getPrototypeOf(object)

参数

object
必需。引用原型的对象。

返回值

object 参数的原型。原型也是对象。

异常

如果 object 参数不是对象,则将引发 TypeError 异常。

本来没打算给getPrototypeOf写实例的,但我发现我错了,对于javascript中的原型链问题,上述两个方法必须搞懂。一点也不能马虎。在此我还是引用上述实例来说明
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script type="text/javascript">
    function Person(){
    }

    Person.prototype.name="Nicholas";
    Person.prototype.age=29;
    Person.prototype.job="software Engineer";
    Person.prototype.sayName=function(){
        return this.name;
    }

    var person1=new Person();
    var person2=new Person();

    document.write(person1.sayName());
    document.write("<br>");

    //下面我们来分别检测一下person1与person2分别是否处在Person对象的原型链中
    document.write(Person.prototype.isPrototypeOf(person1));
    document.write("<br>");
    document.write(Person.prototype.isPrototypeOf(person2));


    //为了说明getPrototypeOf,在此我还是想采纳上述的例子
    var Obj1=Object.getPrototypeOf(person1);
    Obj1.sex="男";
    document.write("<br>");
    document.write(person1.sex);
    document.write("<br>");

    //为了验证Object.getPrototypeOf()方法返回的是否是对象的原型,在此我特意将以下两者进行了比较。最后被证实是完全相等的。
    document.write(Obj1===Person.prototype);
</script>
</body>
</html>

output:
Nicholas
true
true

true

参考资料:

《javascript高级程序设计》
http://www.365mini.com/page/javascript-isprototypeof.htm
https://msdn.microsoft.com/library/bch72c9e(v=vs.94).aspx

getPrototypeOf
https://msdn.microsoft.com/library/ff877835(v=vs.94).aspx

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值