JS:js的Object的原型方法和静态方法的考点(五颗星)

1.object原型方法

1. propertyIsEnumerable 判断枚举性(可否遍历循环)------只能判断对象实例成员

重点: 理解枚举的概念-------js自带的属性方法一般都不可枚举

能判断原型成员

2.toString-------转字符串用

toString:返回数据特定的格式的字符串 [object 构造函数]。

  • 几乎所有的构造函数都有原型成员toString,所以字符串,数字,布尔,数组等类型使用toString是使用自己构造函数的toString原型方法
  • Object.prototype.toString.call(...);才能真正使用Object的toString原型方法
  • 作用:可以获取所有数据的真实类型

使用场景: 判断所有数据的真实类型 Object.prototype.toString

3.其它

constructor:获取当前对象的构造函数

hasOwnProperty:判断当前实例对象中是否存在指定的属性

isPrototypeOf:判断当前对象是否在指定对象的原型链中

propertyIsEnumerable:实例成员是否可以枚举(循环遍历)返回布尔值

valueOf:返回当前对象对应的值。

三大包装类型(还有Date)都有原型成员valueOf,所以基本类型使用valueOf是使用自己包装类型的valueOf原型方法

Object.prototype.valueOf.call(...);才能真正使用Object的valueOf原型方法

特点:基本类型会得到包装类型的返回值

<script>
        // 目的: 了解 Object的原型方法 
        console.log(Object.prototype);
        // 构造函数 Person
        function Person(name, age) {
            this.name = name;
            this.age = age;
        }
        // 原型对象 Person.prototype
        Person.prototype.eat = function () {
            console.log("吃饭");
        }
        // 实例对象  p
        var p = new Person("张三", 20);
        
        // 1. propertyIsEnumerable 判断枚举性(可否遍历循环)------只能判断对象实例成员
        // ** 重点: 理解枚举的概念-------js自带的属性方法一般都不可枚举
        for(var k in p){
            // constructor 属性没被遍历???? 因为不可枚举
            console.log(k);
        }
        console.log("---------把Person.prototype看做是一个实例对象----------");
        console.log(Person.prototype.propertyIsEnumerable("eat"));// true 可枚举
        console.log(Person.prototype.propertyIsEnumerable("constructor")); //false 不可枚举
        // 不能判断原型

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

前端面试题 文章被收录于专栏

前端面试的一些常问问题、问题的具体实现(可直接运行)以及底层原理

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务