资讯专栏INFORMATION COLUMN

【js基础】理清Object、Object.prototype、Function、Function.

z2xy / 511人阅读

摘要:上面这段代码一般被用来判断变量的类型,相信很多人都非常熟悉今天时用到上面这段代码,突然想到方法,为啥两者不一样呢的并不是自有属性,而是继承属性那究竟时继承的谁呢,或者换句话说,时由什么构造的呢为啥运行上面这段代码会提示原来执行等同于执行而且

Object.prototype.toString.call(something)

上面这段代码一般被用来判断变量的类型,相信很多人都非常熟悉
今天coding时用到上面这段代码,突然想到 Object.toString 方法,为啥两者不一样呢
ObjecttoString 并不是自有属性,而是继承属性
Object 究竟时继承的谁呢,或者换句话说,Object 时由什么构造的呢?

Object.toString.call([])

为啥运行上面这段代码会提示 Function.prototype.toString requires that "this" be a Function

console.log(Object.__proto__.constructor)        // ƒ Function() { [native code] }
Object.toString === Function.prototype.toString  // true
Object.__proto__ === Function.prototype          // true
Object instanceof Function                       // true

原来执行 Object.toString.call([]) 等同于执行 Function.prototype.toString([])
而且 Object 是由 Function 构造的
那么 Function 又是由什么构造的呢

console.log(Function.__proto__.constructor)     // ƒ Function() { [native code] }

我们看到 Function 是由 Function 构造的
那么是不是说 Function 就是继承链的最顶层了呢? 答案肯定是 不是

Function.prototype.__proto__ === Object.prototype // true
Function.__proto__.__proto__ === Object.prototype // true
Object.__proto__.__proto__ === Object.prototype   // true
Function.prototype.constructor === Object         // false

我们看到, Function.prototype_proto__ 指向了 Object.prototype
我们之前说过, Function 继承自 Function ,自然 Function.__proto__.__proto__ 是指向 Object.prototype
我们之前也说过, Object 继承自 Function,所以Object.__proto__.__proto__ 也是指向 Object.prototype

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90085.html

相关文章

  • JS中原型和原型链深入理解

    摘要:如果要理清原型和原型链的关系,首先要明确一下几个概念中的所有东西都是对象,函数也是对象而且是一种特殊的对象中所有的东西都由衍生而来即所有东西原型链的终点指向对象都有一个隐藏的属性,他指向创建它的构造函数的原型,但是有一个例外,指向的是。 首先要搞明白几个概念: 函数(function) 函数对象(function object) 本地对象(native object) 内置对象(bu...

    Alex 评论0 收藏0
  • __proto__ 和 prototype 会出现在什么地方?它们之间是什么关系?实现继承依赖什么?

    摘要:递归闭包原型继承本文主要讲解理清一些函数常用的知识点递归闭包是什么闭包使用场景什么是原型和原型链如何实现继承继承的原理,原文。当访问一个对象上的属性时,先尝试访问自身上的属性,再通过原型链尝试访问其构造函数原型上的属性。 递归、闭包、原型、继承 本文主要讲解、理清一些函数常用的知识点:递归、闭包是什么、闭包使用场景、什么是原型和原型链、如何实现继承、继承的原理,原文。 递归 函数的递归...

    bang590 评论0 收藏0
  • JS的原型链和继承

    摘要:是对象或者实例中内置的,其指向的是产生该对象的对象的在浏览器中提供了让我们可以访问,通过的指向形成的一个链条,就称做原型链,原型链的整个链路是实例对象构造函数的的。 原型和原型链 原型prototype,在创建新函数的时候,会自动生成,而prototype中也会有一个constructor,回指创建该prototype的函数对象。 __proto__是对象或者实例中内置的[[proto...

    anRui 评论0 收藏0
  • 窥探Underscore源码系列-开篇

    摘要:他指示了一个对象的属性,返回的将用来获得该属性对应的值在上面的分析中,我们知道,当传入的是一个函数时,还要经过一个叫的内置函数才能获得最终的所以此处的必然是优化回调的作用了。 开篇说明 对的,让你所见,又开始造轮子了。哈哈,造轮子我们是认真的~ 源码阅读是必须的,Underscore是因为刚刚学习整理了一波函数式编程,加上自己曾经没有太多阅读源码的经验,先拿Underscore练练手,...

    zorpan 评论0 收藏0

发表评论

0条评论

z2xy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<