美文网首页
JS创建对象(1)

JS创建对象(1)

作者: 小令飞霜 | 来源:发表于2017-08-11 23:04 被阅读0次

    问题:通过类可以创建多个具有相同属性和方法的对象,但ECMAScript中没有类的概念,怎样创建一个对象呢?

    先看看JS里对象的定义

    ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或函数”。对象的每个属性或方法都有一个名字,每个名字都映射到一个值,也就是所谓的key:value,其中value可以是数据或函数。

    创建一个对象有好几种方法,比如:我想创建一个person对象,这个人的名字叫Tom,他今年20岁了,是一名教师~

    1.最简单的方法:object构造函数方法

    //创建一个object实例

    var person=new object();

    //为它添加属性

    person.name="Tom";

    person.age=20;

    person.job="teacher";

    //为它添加方法

    person.sayName=function(){

            console.log(this.name);

    };

    2.同样的对象,用对象字面量的语法可以写成这样

    var person={

            name : "Tom",

            age: 20,

            job : "teacher",

            sayName : function(){

                    console.log(this.name);

            }

    }

    //下面两行是测试的代码,可以忽略

    person.sayName();//Tom

    console.log(person.age);//20

    注:上面两种方法虽然简单,但是有一个致命的缺点,你看出来了吗?

    是的,他们可以用来创建单个对象,可是如果你想要很多类似的对象怎么办呢?比如说我想为班上的50个同学每个人都创建一个属于他们的对象,要是按照上面的方法一个一个写,估计我会累死的。而且代码很多都是重复的,只不过是换个值而已,没有一点技术含量更没效率。

                                               解决方法来了!

    3.仿照工厂模式创建对象:工厂模式抽象了创建具体对象的过程,我们也可以把创建对象的具体过程封装起来。用什么方法呢?函数!!!

    (其实就是把方法1的代码放到函数里,让它变得更灵活)

    function createPerson(name,age,job){

            //创建一个object实例

            var o=new object();

            //为它添加属性

            o.name=name;

            o.age=age;

            o.job=job;

            //为它添加方法

            o.sayName=function(){

                    console.log(this.name);

            };

            return o;//记着要把结果返回

       }             

    现在你可以创建多个相似对象了,但是却没办法知道对象的类型,别着急,程序员的智慧是无穷的

    4.用构造函数模式创建对象

    function Person(name,age,job){

            this.name=name;

            this.age=age;

            this.job=job;

            this.sayName=function(){

                    console.log(this.name);

            }

    }

    //为Tom创建对象

    var person1=new Person("Tom",20,"teacher");

    //为Tom的学生创建对象

    var person1=new Person("Tommy",12,"student");

    注:(1)在这种方法中,我们并没有用new操作符新建一个对象,实际上函数自己帮我们创建了一个对象,它的引用是this,this拿到了当前对象的地址,我们才能把属性添加到对象中去。

    相关文章

      网友评论

          本文标题:JS创建对象(1)

          本文链接:https://www.haomeiwen.com/subject/huurrxtx.html