1.
每创建(声明)一个函数,创建的这个函数都会有一个默认属性prototype,这个属性对应着一个对象,这个对象就是原型对象。
function fn() {
}
console.log(fn.prototype);
Object
function fm() {
}
console.log(fm.prototype);
Object
2.
每一个函数都有自己的prototype
function fn() {
}
function fm() {
}
console.log(fn.prototype==fm.prototype);
false
3.
当函数以构造函数的形式调用,它所创建的对象都会含有一个隐匿属性,指向这个构造函数的原型对象,可以通过__proto__来访问.
function fn() {
}
var nm=new fn();
console.log(nm.__proto__==fn.prototype);
true
function fn() {
}
var nm=new fn();
var nw=new fn();
console.log(nw.__proto__==fn.prototype);
true
4.
当访问对象的属性或方法时,优先在自己身上找,没有则在原型对象中找
function fn() {
}
fn.prototype.a='原型中的a';
var nm=new fn();
nm.a='nm中的a';
console.log(nm.a);
nm中的a
function fn() {
}
fn.prototype.a='原型中的a';
var nm=new fn();
//nm.a='nm中的a';
console.log(nm.a);
原型中的a