首页 > 试题广场 >

js原型链,原型链的顶端是什么?Object的原型是什么?O

[问答题]

js原型链,原型链的顶端是什么?Object的原型是什么?Object的原型的原型是什么?在数组原型链上实现删除数组重复数据的方法

原型链的顶端:null
Object的原型:Function.prototype
Object原型的原型:Object.prototype
数组原型链上实现数组去重方法:
Array.prototype.unique = function() {
    let obj = {}, len = this.length, newArr = [];
    for (let i = 0; i < len; i++) {
        if (!obj[this[i]]) {
            obj[this[i]] = 1;
            newArr.push(this[i])
        }
    }
    return newArr;
}
发表于 2021-01-10 16:17:27 回复(1)
原型是函数特有得属性。 对象和数组都是没有原型这个属性的。
var obj = {};
var arr = [];
//obj.prototype.a=1 或 arr.prototype.b=2 抛属性未捕获到异常
函数的原型可以挂载属性和方法上去。

__proto__    这就是原型链。浏览器最新的表达: [[prototype]] 

任何的数据都是有原型链的。对象obj、数组arr、number等。

原型: 原型分为隐式原型和显式原型,每个对象都有一个隐式原型,它指向自己的构造函数的显式原型。

原型链: 多个__proto__组成的集合成为原型链

  • 所有实例的__proto__都指向他们构造函数的prototype

  • 所有的prototype都是对象,自然它的__proto__指向的是Object()prototype

  • 所有的构造函数的隐式原型指向的都是Function()的显示原型

  • Object的隐式原型是null



编辑于 2022-06-27 16:59:45 回复(0)
null
发表于 2019-10-16 01:49:33 回复(0)
Array.prototype.unique = function () {
  let newArray = [];
  //   1.map有return值,不会改变原数组
  //   this.map(value=>{
  //         if(newArray.indexOf(value)==-1) {
  //             newArray.push(value);
  //         }
  //     })
  //   return newArray;

  // 2.filter
  //   newArray = this.filter((value, index) => {
  //     return this.indexOf(value)===index;
  //   });
  //   return newArray;

  // 3.reduce 有return值
  //   newArray = this.reduce((pre, cur) => {
  //     if (pre.includes(cur) === false) {
  //       pre.push(cur);
  //     }
  //     return pre;
  //   }, []);
  //   return newArray;
};

var arr = [2, 3, 2, 3, 4, 5, 0, 6, 4, 7, "a", "a", "b"];
console.log(arr.unique());

发表于 2022-03-23 21:54:43 回复(0)
Nullnull
发表于 2022-03-06 17:47:46 回复(0)
原型链的顶端:Object.prototype,其__proto__==null;
Object的原型:Function.prototype
Object的原型的原型:Object.prototype
发表于 2021-07-29 19:44:04 回复(0)