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%内容,订阅专栏后可继续查看/也可单篇购买
前端面试题 文章被收录于专栏
前端面试的一些常问问题、问题的具体实现(可直接运行)以及底层原理