1. 原型prototype
每个函数被创建的时候都会有一个prototype属性,这个属性会指向函数的原型对象。默认情况下每个原型对象又都会获取一个constructor属性,这个属性包含一个指向prototype属性所在函数的指针。
function Person()
{
}
console.log(Person.hasOwnProperty("prototype"));
console.log(Person.prototype)
2 原型对象
首先,每个函数被创建的时候都会有一个prototype属性,prototype的值是一个对象。这个对象就是这个析构函数的原型对象,这个对象上面的方法和属性可以被实列所访问到。通过 prototype可以设置和访问原型对象上的方法。
function Person()
{
}
//console.log(typeof Person.prototype)//Object
Person.prototype.name="哈哈";
//console.log(Person.prototype.name)//哈哈
//delete Person.prototype.name;//也可以删除属性
//console.log(Person.prototype);
Array.prototype.sort=function()
{
return "方法被改写了";
}
var a=[1,2,3];
var newarr=a.sort();
console.log(newarr)
3 原型链
说原型链 ,就先说原型对象,实列可以访问到原型对象上的方法,和属性,如果该原型对象上没有实列所访问的对象或者方法, 那么实列就会去该原型对象.__proto__所指的原型对象上去找。
function person()
{
}
function student()
{
}
student.prototype.__proto__=person.prototype;
//person.prototype.name="haha";
//student.prototype.name="ha"
var stu=new student();
console.log(stu.name);