javascript Function的原型对象为什么是空函数

2024-11-24 04:38:30
推荐回答(2个)
回答1:

  1. 你可以换成是这样会好理解一点。

    Function.prototype=empty;

    function empty(){}

    empty指向的是函数,Function.prototype当然也是函数。

     

     

  2. alert(Function);

    alert(Object);

    alert(Object.constructor+":"+Function.constructor);//发现都是由函数构造的

    你会发现它们都是一个函数。所以Object是Function的实例。Function也是Object的实例。

回答2:

以下是function的原型:
function Person() {}
Person.prototype.name = "Nicholas";
Person.prototype.age = "29";
Person.prototype.job = "Software Engineer";
Person.prototype.sayName = function () {
alert(this.name);
};

var person1 = new Person();
person1.sayName(); //"Nicholas"
var person2 = new Person();
person2.sayName(); //"Nicholas";
alert(person1.sayName == person2.sayName); //true

从原型中可以看出来,function原型定义时:“function Person() {}”函数体中没有内容,因此是空函数。
原型对象理解:
无论什么时候,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。在默认情况下,所有原型对象都会获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针。就拿前面的例子来说,Person.prototype.constructor指向Person。而通过这个构造函数,还可以继续为原型对象添加其它属性和方法。