js内置构造函数的原型对象

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>内置构造函数的原型对象</title>
</head>
<body>
<script type="text/javascript">
    //Object.prototype  是所有对象最顶层的原型对象
    //里面的成员属性成员方法,所有的对象都能够使用
    // console.log(Object.prototype);
    // //以数组构造函数Array为例
    // console.log(Array.prototype);
    // //数组构造函数的原型对象的原型对象,就是Object.prototype
    // console.log(Array.prototype.__proto__ == Object.prototype);


    //Object.prototype里面的方法
    //Object.prototype.hasOwnProperty()  判断一个对象有没有自己的成员(不是原型链上的)
    //使用场景:在对代码的效率要求特别高时,原型链的查找方式是非常浪费时间的
    //禁止在原型链上查找成员,使用hasOwnProperty进行判断
    function Person(){
        this.age = 40;
    }
    Person.prototype.say = function(){
        console.log('我今年' + this.age + '岁');
    }
    var obj = new Person();
    //注 hasOwnProperty方法 是最顶的原型对象上的方法
    // console.log(obj.hasOwnProperty('age'));
    // console.log(obj.hasOwnProperty('say'));

    //Object.prototype.isPrototypeOf() 判断一个对象是不是另一个对象的原型对象

    // console.log( Object.prototype.isPrototypeOf(obj) );

    var obj2 = {"age":40};
    // console.log(obj2.isPrototypeOf(obj));

    //注意  函数本身也是一个特殊的对象,有自己的成员属性和方法
    //Object构造函数,就有很多自己的方法
    //Object.getPrototypeOf() 获取一个对象的原型对象
    // console.log( Person.prototype );  //通过构造函数找
    // console.log( obj.__proto__ );//通过实例对象找   __proto__ ES6才规定必须有
    // console.log( Object.getPrototypeOf(obj) ); //兼容低版本浏览器  ES5语法
    // 
    console.log(Object.prototype);//查看constructor属性下的成员
    // console.log(Object);
    // 构造函数本身的方法,通常叫做静态方法,只能使用 函数名.方法名() 调用
    // 实例对象以及原型对象的方法,只能使用 对象.方法名() 调用
    // 静态方法,是不需要实例化对象就可以直接调用的。
    // 比如 Math.random() 也是Math的静态方法
</script>
</body>
</html>

 

posted @ 2021-02-22 20:02  华北业余选手  阅读(46)  评论(0)    收藏  举报