js原型(一)

1. 除了new Function('str','console.log(str)'); new出的对象是function,其他的都是Object。

凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。其实,不管匿名函数

2.函数对象都有原型对象。

  普通对象没有prototype,但有__proto__属性。

3.原型对象其实就是普通对象。但Function除外,它的原型是函数对象。但是这个函数对象没有原型对象,也就是没有prototype属性。

4.匿名函数对象的原型是Object,实名函数对象的原型是它自己。

  匿名函数是什么?

       var f2 = function(){};
       var f3 = new Function('str','console.log(str)');

       这样创建的都是匿名函数

  实名函数是什么?

       function f1(){};

  为什么会有这样的区别??

  从这句console.log(f1.prototype) //f1 {} 的输出就结果可以看出,f1.prototype就是f1的一个实例对象。就是在f1创建的时候,创建了一个它的   实例对象并赋值给它的prototype,基本过程如下:
  var temp = new f1();
  f1. prototype = temp;

  所以,Function.prototype为什么是函数对象就迎刃而解了,上文提到凡是new Function ()产生的对象都是函数对象,所以temp1是函数对象。
  var temp1 = new Function ();
  Function.prototype = temp1;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值