muwei5231的博客

记录自己的学习历程

[Javascript学习记录]1.对象_创建对象的方法
对象可以理解为一个名值对,其中的值可以是数据和函数。有多种方法可以创建对象,最简单的就是创建一个Object实例,再为其添加属性与方法。如同:
var person = new Object();
person.name = "zhangsan";
person.age = "19";
person.job = "student";
person.sayName = function(){
          alert(this.sayName);
};

用对象字面量创建时如下:

var person = {
name : "zhangsan",
age : 19,
job : "student",
sayName : function(){
          alert(this.sayName);
}
<p>};</p>

但是需要创建多个对象时,这种方法会显得过于繁琐,于是有了以下的方法:

1.工厂模式(但是Javascript中无法创建类):抽象了创建具体对象的过程,解决了创建多个相似对象的问题,但是却无法知道一个对象的类型

function createPerson(name,age,job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
alert(this.sayName);
};
return o;
}

var person1 = createPerson("zhangsan",19,"student");
var person2 = createPerson("lisi",29,"teacher");


2.构造函数模式:创建一个自定义的构造函数,并定义对象类型的属性与方法,创建实例时必须使用new操作符:

function Person(name,age,job){
   this.name = name;
   this.age = age;
   this.job = job;
   this.sayName = sayName;
}
function sayName(){
   alert(this.name);
}
var person1 = new Person("zhangsan",19,"student");
var person2 = new Person("lisi",29,"teacher");

3.构造函数模式与原型模式的混合:使用最广泛的方法,既可以保留实例的独立属性,又可以共享对方法的引用:

function Person(name,age,job){
     this.name = name;
     this.age = age;
     this.job = job;
     this.friends = ["wanger","zhangwu'];
}

Person.prototype = {
constructor : Person,
sayName : function(){
    alert(this.name);
}
}

var person1 = new Person("zhangsan",19,"student");
var person2 = new Person("lisi",29,"teacher");

person1.friends.push("chengyi");
alert (person1.friends); //"wanger,zhangwu,chengyi"
alert (person2.friends;) //"wanger,zhangwu"
alert (person1.sayName === person2.sayName);  //true
可以看到,对person1添加了新的朋友“chengyi”,但是不会对person2产生影响,而共享的“wanger,zhangwu”则都保留了下来。同时,也可以共享原型中的sayName方法。

此外还有动态原型模式,寄生构造函数模式,稳妥构造函数模式等。不作记录,需要时再查找。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/muwei5231/article/details/49963739
个人分类: 学习记录
博主设置当前文章不允许评论。

没有更多推荐了,返回首页

不良信息举报

[Javascript学习记录]1.对象_创建对象的方法

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭