资讯专栏INFORMATION COLUMN

js中对象与函数的关系

Eirunye / 1319人阅读

摘要:问题引入分析某源码的时候看到这样一段代码,突然一个问题萌发了中对象与函数到底有什么样的关系首先看几段代码结论函数是一种对象结论是一种函数结论对象又可以通过函数来创建根据的解释中所有事物都是对象,这样以来都已经绕晕了。

问题引入:new Function("msg","alert(msg)");
分析某源码的时候看到这样一段代码,突然一个问题萌发了:js中对象与函数到底有什么样的关系;
首先看几段代码:

function test() {};
console.log(test instanceof Object);    //    true

结论:函数是一种对象

typeof Object; // function

结论:Object是一种函数

function test() {
    this.name="test"
};
var obj = new test();

结论:对象又可以通过函数来创建

根据W3C的解释JS中所有事物都是对象,这样以来都已经绕晕了。

其实后来仔细回味想想他们之前并没有矛盾:
前提条件,函数是一种特殊的对象,每次加圆括号时可以调用一段代码段;
js给我们提供了两个函数
1.Function,让我们来创造函数(特殊的对象) 如 new Funtion();

2.Object,让我们来创造普通的对象, 如 new Object();

Function中有个属性prototype 所有函数的__proto__ 属性都指向改属性 如:

function test() {};
test.__proto__ === Function.prototype;

test.__proto__... === Object.prototype;

Object.__proto__ === Function.prototype;

结论一:实例对象(函数)的__proto__指向Object(Function)的prototype;
结论二:对象的__proto__原型链 上会有一个指向 Object.prototype

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

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

相关文章

  • js对象(二)—— 函数对象关系(认识原型链)

    摘要:还是先看一些说法和描述中,一切都是对象,函数也是对象,数组也是对象,但是数组是对象的子集。对象都是由函数创建的。 首先,结合之前的一篇博客js对象(一)——创建对象开头,为了理解对象,抛出了一系列比较绕的概念,即对象和函数的关系,搞清楚了这个问题,可能才算真正理解了什么是对象,什么是函数。还是先看一些说法和描述: JavaScript中,一切都是对象,函数也是对象,数组也是对象,但是数...

    tracymac7 评论0 收藏0
  • 浅谈JS构造函数、原型对象(prototype)、实例属性/方法之间关系

    摘要:同时给该构造函数自动添加一个属性,该属性为指针,指向原型对象。总结构造函数中的属性和方法仅为声明和定义,一旦实例化工作完成后。实例对象自身的属性和方法与构造函数将不在存在关联关系。 构造函数:函数中的一种,通过关键字new可以创建其实例。为了便于区分,通常首字母大写;原型对象:一种特殊的对象,构造函数创建时即自动生成;与构造函数形成一一对应,如同人和影子般的关系;实例:通过构造函数实例...

    kevin 评论0 收藏0
  • 深入学习js之——原型和原型链

    摘要:我们用一张图表示构造函数和实例原型之间的关系好了构造函数和实例原型之间的关系我们已经梳理清楚了,那我们怎么表示实例与实例原型,也就是或者和之间的关系呢。 开篇: 在Brendan Eich大神为JavaScript设计面向对象系统的时候,借鉴了Self 和Smalltalk这两门基于原型的语言,之所以选择基于原型的面向对象系统,并不是因为时间匆忙,它设计起来相对简单,而是因为从一开始B...

    FingerLiu 评论0 收藏0
  • 深入学习js之——原型和原型链

    摘要:我们用一张图表示构造函数和实例原型之间的关系好了构造函数和实例原型之间的关系我们已经梳理清楚了,那我们怎么表示实例与实例原型,也就是或者和之间的关系呢。 开篇: 在Brendan Eich大神为JavaScript设计面向对象系统的时候,借鉴了Self 和Smalltalk这两门基于原型的语言,之所以选择基于原型的面向对象系统,并不是因为时间匆忙,它设计起来相对简单,而是因为从一开始B...

    xialong 评论0 收藏0
  • Vue 数据响应式原理

    摘要:接下来,我们就一起深入了解的数据响应式原理,搞清楚响应式的实现机制。回调函数只是打印出新的得到的新的值,由执行后生成。及异步更新相信读过前文,你应该对响应式原理有基本的认识。 前言 Vue.js 的核心包括一套响应式系统。 响应式,是指当数据改变后,Vue 会通知到使用该数据的代码。例如,视图渲染中使用了数据,数据改变后,视图也会自动更新。 举个简单的例子,对于模板: {{ name ...

    Mike617 评论0 收藏0

发表评论

0条评论

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