js中对象与函数的关系

问题引入: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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值