原型:
1.function对象的属性。T.prototype(这里的T是一个函数)
2.它是一个对象,此对象是T构造函数产生的对象的父级对象
3.此对象可以被修改
4.构造函数 产生的对象 可以继承使用原型/父级的属性
5.原型可以赋值新的对象
6.原型的constructor属性可以认为修改
7.Object.prototype 是所有对象的顶级原型
关于原型的注意点:
1.对象如何查看他的原型:对象.__ proto__(此属性可以被人为修改)
2.对象如何查看他的构造函数:对象.constructor; (此属性是通过原型继承过来的)
3.举例
function P(){
}
P.prototype.name="tom";
P.prototype={name:"som"}
var p=new P();
p.name//"som"
p.constructor//ƒ Object() { [native code] };已经不再是P了
原型链:
function P(name){
this.name=name;
}
P.prototype={
name:"fuqin",
sayName:function(){
console.log(this.name);
}
}
var p=new P("wangmudan");
p.sayName();//wangmudan
P.prototype.sayName();//fuqin
function P(){}
P.prototype={
heigth:100,
increase:function(){
this.heigth++;
}
}
var p=new P();
p.heigth//100
p.increase();
p.heigth//101
P.prototype.heigth//100
var a={}
a.__proto__==Object.prototype//true
P.prototype.__proto__==new Object().__proto__//true
P.prototype.__proto__==Object.prototype//true
另一种创建对象的方法:
var p=Object.creat(原型对象);
var p=Object.creat(null);此时的对象没有原型。最后人为添加的原型对象不起作用
方法的重写:Object .prototype上有toSring,但是 Nmuber.prototype 上重写了Object.prototype 的toSring,Number上的toSring方法,可以实现自己的功能。
网友评论