位置:首页 > 软件操作教程 > 编程开发 > JavaScript > 问题详情

JavaScript 检测原型对象

提问人:刘团圆发布时间:2020-11-26

■知识点

在JavaScript中,Function对象预定义了 prototype属性,该属性指向一个原型对象。当定义构造函数时,系统会自动创建一个对象,并传递给prototype属性,这个对象被称为原型对象。原型对象可以存储构造类型的原型属性,以便让所有实例对象共享。

■实例设计

下面的代码为自定义类型函数定义两个原型成员。

var f = function (){}

f.prototype = {

    a : 1,

    b : function (){

        return 2;

    }

}

console.log (f.prototype, a) ;         //读取函数的原型对象的属性a,返回1

console.log (f. prototype.b() ) ; //读取函数的原型对象的属性b,返回2

当使用new运算符调用函数时,就会创建一个实例对象,这个实例对象将继承构造函数的原型对象中所有属性。

var o = new f (); //实例对象

console.log (o.a); //访问原型对象的属性

console.log (o.b ()); //访问原型对象的厲性

为了方便判定,Object对象定义了 isPrototypeOf()方法,该方法可以检测一个对象的原型对象。针对上面的示例,可以判断f.prototype就是对象o的原型对象,因为其返回值为true。

var b = f.prototype.isPrototypeOf(o); 

console.log(b);

■小结

下面的示例演示了各种特殊对象的原型对象。

函数的原型对象可以是Object.prototype或者是Function.prototype:

    var f = function (){}

    console.log(Object.prototype.isPrototypeOf(f));                //返回 true

    console.log(Function .prototype.isPrototypeOf(f));        //返回 true

Object和Function对象的原型对象比较特殊:

    console.log(Function .prototype.isPrototypeOf(Object));     //返回 true

    console.log(Object.prototype.isPrototypeOf(Function));     //返回 true

Object.prototype 和 Function.prototype 的原型对象不是Object.prototype,而 Function.prototype 的原型对象可以是Function.prototype,但是Object.prototype的原型对象绝对不是Function .prototype:

    console.log (Object.prototype.isPrototypeOf (Object.prototype));          //返回 false

    console.log (Object.prototype.isPrototypeOf (Function .prototype));  //返回 true

    console.log (Function.prototype.isPrototypeOf (Function.prototype));      //返回 false 

    console.log (Function.prototype.isPrototypeOf (Object.prototype));         //返回 false

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部