1。只有构造函数才有prototype属性并且可以访问到,但是对象实例不具有该属性,只有一个内部的不可访问的__proto__属性 2。当调用构造函数创建一个实例的时候,实例内部将包含一个内部指针(__proto__)指向构造函数的prototype,这个连接存在于实例和构造函数的prototype之间,而不是实例与构造函数之间。 3。实例就是通过构造函数创建的。实例一创造出来就具有constructor属性(指向构造函数)和__proto__属性(指向原型对象), 构造函数中有一个prototype属性,这个属性是一个指针,指向它的原型对象。 原型对象内部也有一个指针(constructor属性)指向构造函数:Person.prototype.constructor = Person; 实例可以访问原型对象上定义的属性和方法。 Person.prototype = {
name : "a",age : 1,sayName : function () {
console.log(this.name);
}
}; 以这样的形式重写原型对象,constructor就不在指向Person,因为每创建一个函数,就会同时创建它的 prototype 对象,这个对象也会自动获得 constructor 属性,指向Person。但是现在重写了原型对象,这时候constructor就变为新对象的constructor,指向Object 构造函数。所以要显示地重置, Person.prototype = {
constructor : Person,name : "a",sayName : function () {
console.log(this.name);
}
};
4。函数的prototype属性,本身是一个由Object构造的实例对象,所有的构造函数都继承自Object 5。__proto__属性和prototype属性的区别 prototype是function对象中专有的属性。 __proto__是普通对象的隐式属性,在new的时候,会指向prototype所指的对象; __ptoto__实际上是某个实体对象的属性,而prototype则是属于构造函数的属性。__ptoto__只能在学习或调试的环境下使用。 6.调用构造函数创造实例时,会给实例添加一个指向原型对象的指针__proto__,并不指向构造函数。 7.Object可以理解为object对象,也可以理解为Object方法,所以,他是Function的实例(Object方法)。Function可以理解为方法对象,所以是Object对象的实例。 8.Object和Function都是构造函数,而所有的构造函数又都是Function对象的实例。Function.prototype又是Object的实例。
9.静态变量和静态函数 定义一个函数之后,通过"."添加的属性和函数或字面量添加的,只有对象本身能访问到,实例访问不到。 10.实例变量和实例方法 通过this.添加的。对象访问不到,只有实例能访问到 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|