js对象的原型,原型链

原型:

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方法,可以实现自己的功能。


最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容