0
点赞
收藏
分享

微信扫一扫

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 条评论