JS原型理解

说实话,一开始我对prototype和property是分不清的,我说的是单词分不清,不知道他们的意思,在强制自己记忆了一遍之后,我是这么记忆的,type(类型),跟“原型”差不多,所以prototype就是原型了,property就是属性了。没办法啊,对于英语差的不好意思说自己学过英语的人,只能这样记忆了,还好这样也记住了。

正文从这里开始吧,说说我对原型模式的理解。
任何一个对象都是有原型的,像Java里类似,Object是所有对象的原型。

先说下JS中的创建对象的几种方式吧

方式一:
var person=new Object();//var person={};
person.name="xiangshuo";
person.age=23;
person.job="fn";
person.sayName=function(){
    alert(this.name);
};
方式二(对象字面量):
var person={
    name:"xiangshuo",
    age:23,
    job:"fn",
    sayName:function(){
        alert(this.name);
    }
};
方式三:工厂模式
function createPerson(name,age,job){
    var o=new Object();
    o.name=name;
    o.age=age;
    o.job=job;
    o.sayName=function(){
        alert(this.name);
    }
    return o;
}
var person1=createPerson("xiangshuo",23,"fn");
方式四:构造函数模式
function Person(name,age,job){
    this.name=name;
    this.age=age;
    this.job=job;
    this.sayName=function(){
        alert(this.name);
    }
}
var person1=new Person("xiangshuo",23,"fn");
构造函数创建多个对象的时候,如果对象含有方法,则要创建多个Function实例。

方式五:原型模式
function Person(){
}
Person.pertotype.name="xiangshuo";
Person.pertotype.age=23;
Person.pertotype.job="fn";
Person.pertotype.sayName=function(){
    alert(this.name);
};
var person1=new Person();

Person对象上有一个prototype原型属性,原型属性指向他的原型对象,原型对象有构造函数和其他属性,原型对象的构造函数指向了Person对象,person1实例对象有一个[[prototype]]内部原型属性,指向了原型对象。如果通过对象字面量来重写整个原型对象,则会切断原型对象构造函数与对象之间的指向关系(完全重写了prototype),这点需要注意,然后通过重新指向
Person.prototype.constructor=Person;

好了,基本上我对原型的理解就是这样,最主要的还是最后一句话,应该是说明了原型与对象之间的关系。以后再深入理解吧,毕竟这是自己第一次感觉对原型有了一定认识的阅读。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值