面向对象(七)相关属性方法补充

构造器

  • 属性:constructor
  • 值:与之关联的构造函数
  • 注意点:constructor是在原型对象身上的,
    我们通过 对象.constructor 访问得到的值其实就是原型对象中对应的值
构造器
构造器

--proto--

如果是使用构造函数创建对象,那么在创建的对象中,有一个--proto--指针指向其构造函数对应的原型对象
访问原型对象的方法
(1)构造函数.prototype
(2)对象.--proto--
注意点:
在正式的开发中,在正式的代码中不要使用该属性
因为这个属性不是ECMA标准里的,它是部分浏览器厂商为了方便程序员开发和调试而提供的一个属性,是非标准的。

<script>
    function Person(){}
    Person.prototype.des = "des";
    var p1 = new Person();

    console.log(Person.prototype == p1.__proto__);  //true
</script>

hasOwnProperty

  • in 关键字
    001 检查对象中是否有指定的属性(实例属性 + 原型属性)
    002 遍历对象
    语法:“属性” in 对象
  • hasOwnProperty
    作用:检查对象中是否存在指定的属性(实例属性)
    语法:对象.hasOwnProperty("属性")
  • 需求:
    要求判断某个属性是否是原型属性,而且仅仅只是原型属性
    01 该属性存在
    02 该属性不是实例属性
<script>
    Object.prototype.des = "des";
    Object.prototype.age = "des";
    var obj = {name:"zs",age:20};


    console.log("name" in obj);
    console.log(obj.hasOwnProperty("name"));
    console.log(obj.des);


    //in 和 hasOwnProperty
    console.log("des" in obj);              //true
    console.log(obj.hasOwnProperty("des")); //false

    function isOnlyPrototypeProperty(propertyName,obj)
    {
        return (propertyName in obj) && !obj.hasOwnProperty(propertyName);
    }

    //验证
    console.log(isOnlyPrototypeProperty("name", obj));
    console.log(isOnlyPrototypeProperty("des", obj));
    console.log(isOnlyPrototypeProperty("age", obj));  //false
</script>

isPrototypeOf

isPrototypeOf 判断是否是原型对象的
instanceof 判断某个对象是否是指定构造函数的实例对象

<script>
    function Person(){};
    var demo = {};
    var demo1 = {};
    Person.prototype = demo;
    Person.prototype.constructor = Person;

    var p1 = new Person();

    //判断某个对象是否是指定对象的原型对象
    console.log(demo1.isPrototypeOf(p1));

</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 普通创建对象和字面量创建对象不足之处:虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有...
    believedream阅读 2,446评论 2 18
  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 1,456评论 3 12
  • 本章内容 理解对象属性 理解并创建对象 理解继承 面向对象语言有一个标志,那就是它们都有类的概念,而通过类可以创建...
    闷油瓶小张阅读 890评论 0 1
  • 最近回南天,下雨,湿度太大。空气中都是浮躁的因子。这种沉闷的天气也直接导致了生活的人特别烦躁,做什么事都乏味,无力...
    kikows阅读 399评论 0 0
  • 世间最好的默契;不是她/他懂你的言外之意。 而是懂你的欲言又止!
    苏北玄天一片云阅读 139评论 0 0